從文檔: 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
你可以刪除,並再次從代碼創建此文件? –