我正在尝试将一个DataFrame写入一个.csv文件:
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='; ')这会引发以下错误
'/export/market_data/temp/marketData_optam_2018-10-12.csv‘:IOError: Errno 2没有这样的文件或目录:
但当我做的时候
dbutils.fs.ls(enrichedDataDir)
Out[72]: []没有错误!当我进入目录级别(更高一级)时:
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)]这个也能用。这意味着我真的有我想要访问的所有文件夹。但我不知道你的.to_csv选项会抛出错误。我还检查了权限,这是很好的!
发布于 2018-10-12 17:10:11
主要的问题是,我正在使用Micrsoft Azure Datalake Store来存储这些.csv文件。无论出于什么原因,都不可能通过df.to_csv向Azure Datalake商店写信。
由于我试图使用df.to_csv,所以我使用的是Pandas DataFrame,而不是火花DataFrame。
我变了
from pyspark.sql import *
df = spark.createDataFrame(result,['CustomerId', 'SalesAmount'])然后通过下面的行写到csv
from pyspark.sql import *
df.coalesce(2).write.format("csv").option("header", True).mode("overwrite").save(enrichedDataFile) 而且它是有效的。
发布于 2020-09-22 10:52:32
这是一个更笼统的答案。
如果您想将文件从DBFS加载到Pandas dataframe,您可以这样做。
谢谢
发布于 2018-10-12 07:48:00
你试过先打开文件吗?(用下面的代码替换第一个示例的最后一行)
from os import makedirs
makedirs(enrichedDataDir)
with open(enrichedDataFile, 'w') as output_file:
df.to_csv(output_file, sep='; ')https://stackoverflow.com/questions/52774555
复制相似问题