DataFrame.to_csv 抛出错误“[Errno 2] 没有那个文件或目录”
DataFrame.to_csv throws error '[Errno 2] No such file or directory'
我正在尝试将 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='; ')
这会引发以下错误
IOError: [Errno 2] No such file or directory:
'/export/market_data/temp/marketData_optam_2018-10-12.csv'
但是当我这样做的时候
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
选项会引发错误。我也检查了权限,没问题!
您试过先打开文件吗? (用以下代码替换第一个示例的最后一行)
from os import makedirs
makedirs(enrichedDataDir)
with open(enrichedDataFile, 'w') as output_file:
df.to_csv(output_file, sep='; ')
主要问题是,我正在使用 Micrsoft Azure Datalake Store 来存储这些 .csv 文件。无论出于何种原因,都无法通过 df.to_csv
写入 Azure Datalake Store。
由于我尝试使用 df.to_csv
我使用的是 Pandas DataFrame 而不是 Spark 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)
并且有效。
这是一个更笼统的答案。
如果你想从 DBFS 加载文件到 Pandas 数据帧,你可以使用这个技巧。
将文件从 dbfs 移动到文件
%fs cp dbfs:/FileStore/tables/data.csv 文件:/FileStore/tables/data.csv
从文件目录读取数据
数据=pd.read_csv('file:/FileStore/tables/data.csv')
谢谢
检查您挂载此路径时用于容器的 sas 令牌的权限。如果它以“sp=racwdlmeopi”开头,那么您有一个带有不可变存储的 sas 令牌。您的令牌应以“ sp=racwdlmeop
我正在尝试将 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='; ')
这会引发以下错误
IOError: [Errno 2] No such file or directory: '/export/market_data/temp/marketData_optam_2018-10-12.csv'
但是当我这样做的时候
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
选项会引发错误。我也检查了权限,没问题!
您试过先打开文件吗? (用以下代码替换第一个示例的最后一行)
from os import makedirs
makedirs(enrichedDataDir)
with open(enrichedDataFile, 'w') as output_file:
df.to_csv(output_file, sep='; ')
主要问题是,我正在使用 Micrsoft Azure Datalake Store 来存储这些 .csv 文件。无论出于何种原因,都无法通过 df.to_csv
写入 Azure Datalake Store。
由于我尝试使用 df.to_csv
我使用的是 Pandas DataFrame 而不是 Spark 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)
并且有效。
这是一个更笼统的答案。
如果你想从 DBFS 加载文件到 Pandas 数据帧,你可以使用这个技巧。
将文件从 dbfs 移动到文件
%fs cp dbfs:/FileStore/tables/data.csv 文件:/FileStore/tables/data.csv
从文件目录读取数据
数据=pd.read_csv('file:/FileStore/tables/data.csv')
谢谢
检查您挂载此路径时用于容器的 sas 令牌的权限。如果它以“sp=racwdlmeopi”开头,那么您有一个带有不可变存储的 sas 令牌。您的令牌应以“ sp=racwdlmeop