Python pyspark将csv文件写入S3错误

Python pyspark将csv文件写入S3错误,python,amazon-s3,Python,Amazon S3,我正在使用pyspark,在向S3写入数据时遇到问题,但从S3读取数据并不是问题 这是我的代码: dic = {'a': {'c1(%)': 0.0, 'c2': 0, 'c3($)': 260, 'c4(%)': 4.79, 'c5': 78, 'c6': 352}, 'b': {'c1(%)': 0.0, 'c2': 0, 'c3($)': 5, 'c4(%)': 0.09, 'c5': 2, 'c6': 280}, 'c': {'c1(%)': 0.0, 'c2': 0, 'c3($)':

我正在使用pyspark,在向S3写入数据时遇到问题,但从S3读取数据并不是问题

这是我的代码:

dic = {'a': {'c1(%)': 0.0, 'c2': 0, 'c3($)': 260, 'c4(%)': 4.79, 'c5': 78, 'c6': 352}, 'b': {'c1(%)': 0.0, 'c2': 0, 'c3($)': 5, 'c4(%)': 0.09, 'c5': 2, 'c6': 280}, 'c': {'c1(%)': 0.0, 'c2': 0, 'c3($)': 0, 'c4(%)': 0.0, 'c5': 0, 'c6': 267}}

df = pd.DataFrame(dic)

df.to_csv("s3://work/.../filename_2018-01-04_08:50:45.csv")
这就是错误:

IOError: [Errno 2] No such file or directory: 's3://work/.../filename_2018-01-04_08:50:45.csv'

有什么问题吗?

请参阅我的上述评论,您需要使用Spark数据帧。实现这一点的一个简单方法是将Pandas DF上的索引转换为列,然后转换为spark DF:

df2=sqlContext.createDataFrame(df.reset_index(drop=False))
然后使用:

df2.write.save("s3://work/.../filename_2018-01-04_08:50:45.csv", format='csv', header=True)

请参阅我上面的评论,您需要使用Spark数据帧。实现这一点的一个简单方法是将Pandas DF上的索引转换为列,然后转换为spark DF:

df2=sqlContext.createDataFrame(df.reset_index(drop=False))
然后使用:

df2.write.save("s3://work/.../filename_2018-01-04_08:50:45.csv", format='csv', header=True)

我猜DF的
to_csv
方法将试图写入本地文件系统中的某个位置,但失败了,因为本地没有这样的位置。您需要创建Spark DF而不是Pandas DF,然后向s3@ags29如果我使用spark dataFrame,它正在写入拼花地板,我需要S3中的CSV文件。不,请参见下文,您可以使用format参数将其另存为csvI猜测DF的
to_csv
方法将试图写入本地文件系统中的某个位置,但由于本地没有这样的位置而失败。您需要创建Spark DF而不是Pandas DF,然后向s3@ags29如果我使用spark dataFrame,它正在写入拼花地板,我需要S3中的CSV文件。不,请参见下面的内容,您可以使用format参数将其另存为csvI获取以下信息:TypeError:“DataFrameWriter”对象不可调用。对不起,我的错误,修改了上面的代码,在我脑子前面输入:)试试看,让我知道它是否有效(可能需要一些调整,因为我现在无法访问Spark进行检查,但基本上应该是正确的)同样从回忆来看,语法会因您使用的Spark版本而异,让我知道它是否适用于您它不会保存为单个CSV文件,我不相信你要的东西可以用Spark来完成,看我得到了这个:TypeError:“DataFrameWriter”对象是不可调用的。对不起,我犯了错误,上面修改了代码,输入的内容超出了我的大脑:)试试看,让我知道它是否有效(可能需要一些调整,因为我现在无法访问Spark进行检查,但基本上应该是正确的)回想起来,根据您使用的Spark版本的不同,语法也会有所不同。请让我知道这是否适用于您。它不会保存为单个CSV文件,只能保存为类似parquet的文件夹。我不相信Spark可以满足您的要求,请参阅