【问题标题】:(PySpark) Problem when read data from local computer(PySpark) 从本地计算机读取数据时出现问题
【发布时间】:2020-10-30 10:41:57
【问题描述】:

当我使用 pyspark 从我的计算机读取数据(DAT 文件 - 4 Gb)时,一切都很好,但是当我使用 pyspark 从本地计算机(我公司中的其他计算机通过 LAN 连接)读取数据时,出现错误下面:

'' Py4JJavaError: 调用 o304.csv 时出错。 : java.io.IOException: No FileSystem for scheme: null ''

Error picture

如果我使用 pandas.read_csv 从本地计算机读取文件,一切都很好(只有 pyspark 有问题)。在这种情况下,请帮助支持。谢谢!

我的电脑读取数据的代码(没问题):

from pyspark.sql import SparkSession

spark = SparkSession.builder.master("local[*]").getOrCreate()

path='V04R-V04R-SQLData.dat' 

df = spark.read.option("delimiter", "\t").csv(path)

我在本地计算机中读取数据的代码(出现问题):

from pyspark.sql import SparkSession

spark = SparkSession.builder.master("local[*]").getOrCreate()

path='//8LWK8X1/Data/Subfolder1/V04R-V04R-SQLData.dat' 

df = spark.read.option("delimiter", "\t").csv(path)

注意:

8LWK8X1 是本地计算机名称

【问题讨论】:

  • 不清楚您所说的我的计算机和本地计算机是什么意思,但据我所知,您正在尝试远程读取文件。方案部分是两​​个正斜杠。您是否有可以远程打开文件的有效路径? Spark 支持 ftp,所以如果这可行,您的路径将是 ftp://8LWK8X1/Data/Subfolder1/V04R-V04R-SQLData.dat。请注意,该方案现在是 ftp: 而不是 null。
  • 我尝试按照您的建议阅读我的文件,但仍然出现错误。你能分享我更多的选择吗?本地计算机是指所有计算机通过 LAN(局域网)连接在一起

标签: apache-spark pyspark


【解决方案1】:

阅读 pandas 并将其转换为 Pyspark Dataframe - 简单的解决方案 :)

Loading into Pandas DF
gam_charge_item_df = pd.read_scv(path)

Creating a PySpark dataFrame
spark_df = spark.createDataFrame(df)

【讨论】:

  • 感谢您的解决方案,问题是这个数据非常大(1-4 Gb),所以如果我们用 pandas 读取,就会出现一些与加载时间过长和内存溢出有关的问题。这就是为什么我需要为这个东西使用一些大数据库的原因......
  • 但是 - 如果您使用的是本地机器,即如果没有配备良好的处理能力和内存,那么即使您使用 Spark,也几乎没有什么区别。