DataFrame.to_csv throws error '[Errno 2] No such file or directory'
我正在尝试将数据帧写入.csv文件:
1 2 3 4 5 6 7 8 | now = datetime.datetime.now() date = now.strftime("%Y-%m-%d") enrichedDataDir ="/export/market_data/temp" enrichedDataFile = enrichedDataDir +"/marketData_optam_" + date +".csv" dbutils.fs.ls(enrichedDataDir) df.to_csv(enrichedDataFile, sep='; ') |
这使我产生了以下错误
IOError: [Errno 2] No such file or directory:
'/export/market_data/temp/marketData_optam_2018-10-12.csv'
但当我这样做
1 2 3 | dbutils.fs.ls(enrichedDataDir) Out[72]: [] |
没有错误!当我进入目录级别(更高一级)时:
1 2 3 4 5 6 | enrichedDataDir ="/export/market_data" dbutils.fs.ls(enrichedDataDir) Out[74]: [FileInfo(path=u'dbfs:/export/market_data/temp/', name=u'temp/', size=0L) FileInfo(path=u'dbfs:/export/market_data/update/', name=u'update/', size=0L)] |
这也行。这对我来说意味着我真正拥有了我想要访问的所有文件夹。但我不知道你的
主要问题是,我正在使用Microsoft Azure Datalake Store存储这些.csv文件。无论出于什么原因,都不可能通过
由于我试图使用
我改为
1 2 3 | from pyspark.sql import * df = spark.createDataFrame(result,['CustomerId', 'SalesAmount']) |
然后通过以下行写入csv
1 2 3 | from pyspark.sql import * df.coalesce(2).write.format("csv").option("header", True).mode("overwrite").save(enrichedDataFile) |
它起作用了。
你试过先打开文件吗?(用下面的代码替换第一个示例的最后一行)
1 2 3 4 5 | from os import makedirs makedirs(enrichedDataDir) with open(enrichedDataFile, 'w') as output_file: df.to_csv(output_file, sep='; ') |