Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Spark从本地驱动程序节点读取csv文件?_Csv_Apache Spark_Pyspark - Fatal编程技术网

如何使用Spark从本地驱动程序节点读取csv文件?

如何使用Spark从本地驱动程序节点读取csv文件?,csv,apache-spark,pyspark,Csv,Apache Spark,Pyspark,我必须将文件从Amazon S3解压到我的驱动程序节点(Spark cluster),并且我需要将所有这些csv文件作为Spark数据帧加载,但当我尝试从驱动程序节点加载数据时,我发现了下一个问题: Pypark: df = self.spark.read.format("csv").option("header", True).load("file:/databricks/driver/*.csv") '路径不存在:文件:/folder/*.csv' 我试图使用dbutils.fs.mv()

我必须将文件从Amazon S3解压到我的驱动程序节点(Spark cluster),并且我需要将所有这些csv文件作为Spark数据帧加载,但当我尝试从驱动程序节点加载数据时,我发现了下一个问题:

Pypark:

df = self.spark.read.format("csv").option("header", True).load("file:/databricks/driver/*.csv")
'路径不存在:文件:/folder/*.csv'

我试图使用dbutils.fs.mv()将所有这些文件移动到dbfs,但我正在运行一个Python文件,无法使用dbutils()。我想我需要广播该文件,但我不知道该怎么做,因为我尝试了
self.sc.textFile(“file:/databricks/driver/*.csv”).collect()
self.sc.addFile(“file:/databricks/driver/*.csv”)
,并且该过程无法找到文件

更新 当我运行此代码时:

import os
BaseLogs("INFO", os.getcwd())
folders = []
for r, d, f in os.walk(os.getcwd()):
    for folder in d:
      folders.append(os.path.join(r, folder))

for f in folders:
    BaseLogs("INFO", f)
BaseLogs("INFO", os.listdir("/databricks/driver/zipFiles/s3Sensor/2017/Tracking_Bounces_20190906.csv.zip"))
BaseLogs("INFO", os.listdir("/databricks/driver/zipFiles/s3Sensor/2017/Tracking_Opens_20190907.zip"))
我得到:

然后我试着做:

try:
    df = self.spark.read.format("csv").option("header", True).option("inferSchema", "true").load("file:///databricks/driver/zipFiles/s3Sensor/2017/Tracking_Bounces_20190906.csv.zip/Bounces.csv")                       
except Exception as e:
    BaseLogs("INFO", e)
    BaseLogs("INFO", "Reading {0} as Spark Dataframe".format("file://" +  file  + ".csv"))
    df = self.spark.read.format("csv").option("header", True).option("inferSchema", "true").load("file://" + file + ".csv")  
我得到了下一个错误:

2019-10-24T15:16:25.321+0000[GC(分配失败)[PSYoungGen: 470370K->14308K(630272K)]479896K->30452K(886784K),0.0209171秒] [次数:用户=0.04系统=0.01,实际=0.02秒] 2019-10-24T15:16:25.977+0000:[GC(元数据GC阈值)[PSYoungGen: 21128K->20462K(636416K)]227432K->64316K(892928K),0.0285984秒] [次数:用户=0.04系统=0.02,实际=0.02秒] 2019-10-24T15:16:26.006+0000:[完全GC(元数据GC阈值) [PSYoungGen:20462K->0K(636416K)][ParOldGen:43854K->55206K(377344K)] 64316K->55206K(1013760K),[元空间:58323K->58323K(1099776K)], 0.1093583秒[Times:user=0.31 sys=0.02,real=0.12秒]2019-10-24T15:16:28.333+0000:[GC(分配失败)[PSYoungGen: 612077K->23597K(990720K)]667283K->78811K(1368064K),0.0209207秒] [次数:user=0.02 sys=0.01,real=0.02秒]信息:发生错误 调用o195.load.:org.apache.spark.sparkeexception:Job 由于阶段失败而中止:阶段0.0中的任务0失败4次,最多 最近的失败:在阶段0.0中丢失任务0.3(TID 3172.31.252.216, 执行器0):java.io.FileNotFoundException:File
文件:/databricks/driver/zipFiles/s3Sensor/2017/Tracking\u Bounces\u 20190906.csv.zip/Bounces.csv 不存在底层文件可能已更新。 通过运行“刷新”,可以显式地使Spark中的缓存无效 在SQL中或通过重新创建Dataset/DataFrame使用TABLE tableName命令 卷入的在 org.apache.spark.sql.execution.datasources.FileScanRDD$$anon$1$$anon$2.getNext(FileScanRDD.scala:248) 位于org.apache.spark.util.NextIterator.hasNext(NextIterator.scala:73)

试试这个

scala> val test = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("file:///path/to/csv/testcsv.csv")

您可以尝试将数据读入panda数据框:

import pandas as pd
pdf = pd.read_csv("file:/databricks/driver/xyz.csv")
df = spark.createDataFrame(pdf)
并将其转换为spark数据帧:

import pandas as pd
pdf = pd.read_csv("file:/databricks/driver/xyz.csv")
df = spark.createDataFrame(pdf)

尝试使用
file:///databricks/driver/*.csv
。你是否将解压后的文件显式保存在该目录下?实际上没有,我定义了其他路径,但文件自动保存在databricks/driver/[我的显式文件夹路径]我尝试了此解决方案,但我正在使用.py文件启动作业。。。我从“pyspark.dbutils import dbutils”导入了它,但它不起作用(找不到模块)。你能用dbutils()用py文件启动作业吗?明白了,更新了我的答案,phps。这种方法很有帮助。由于您的数据位于驱动程序上,因此它不应该是超大数据集。如何修复此错误?无法合并类型和?我已将Pandas数据帧转换为Koalas数据帧,并且可以正常工作,但我无法使用delta、dbfs或s3中的数据帧插入数据。。。java.lang.IllegalStateException:在Spark本地属性中找不到REPL id。Spark submit和R不支持来自不同群集的事务写入。如果您使用的是R,请切换到Scala或Python。如果您使用的是spark submit,请将其转换为Databricks JAR作业。也可以通过将“spark.databricks.delta.multiClusterWrites.enabled”设置为“false”来禁用多群集写入。如果禁用此选项,对单个表的写入必须来自单个群集。问题可能是因为zip、unzip和try-it,“zip、unzip和try-it”2017/Tracking_Bounces_2019090906.csv.zip/Bounces.csv是什么意思?这里Bounces.csv位于Tracking_Bounces_20190906.csv.zip中,zip文件夹。我想问题可能是因为您的csv文件在zip中,所以请解压缩该文件夹并给它一个try。这只是文件夹的名称,csv文件实际上是一个csv文件