从文档: https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrameWriter 由于V1.4
csv(path, mode=None, compression=None, sep=None, quote=None, escape=None, header=None, nullValue=None, escapeQuotes=None, quoteAll=None, dateFormat=None, timestampFormat=None)
例如
from pyspark.sql import DataFrameWriter
.....
df1 = sqlContext.createDataFrame(query1)
df1.write.csv(path="/opt/Output/sqlcsvA.csv", mode="append")
如果你想要写一个文件,你可以在任意这些线路的使用聚结或repartition
。不管哪一行,因为数据帧只是一个DAG执行,在写入csv之前不会执行任何操作。 repartition
&3210有效地使用相同的代码,但合并只能减少分区的数量,其中repartition
也可以增加它们。为了简单起见,我只是坚持使用repartition
。
例如
df1 = sqlContext.createDataFrame(query1).repartition(1)
或
df1.repartition(1).write.csv(path="/opt/Output/sqlcsvA.csv", mode="append")
我想在文档的例子并不是很大,他们没有表现出比使用路径其他参数的例子。
参考你试过两件事情:
(append)
对于工作,就必须命名追加包含值“追加”一个字符串变量。 DataFrameWriter库中没有字符串常量,名为append。即你可以在你的代码中添加这个,然后它就可以工作。 追加=“追加”
('mode=append')
对于工作的CSV方法必须解析出mode=append
字符串以获取模式的价值,这将是额外的工作时,你可以有一个参数与需要提取的值“append”或“overwrite”完全相同。没有一个是特殊情况,Python内置,并不特定于pyspark。
另一方面,我建议尽可能使用命名参数。 例如
csv(path="/path/to/file.csv", mode="append")
,而不是位置参数
csv("/path/to/file.csv", "append")
它更清晰,并帮助理解。
是否有一个由sqlcsvA.csv调用的文件? –
是的输出被复制到'sqlcsvA.csv'文件。 – kaks
你可以删除,并再次从代码创建此文件? –