[英]How to export Pyspark dataframe to csv file by date
我有一個 Pyspark dataframe 包含日期和語句(2 個不同的列)。 我想根據唯一日期將所有語句導出到不同的 csv 文件。 我怎么做? 例如,我將在 1 月 1 日有一個名為 01012016.csv 的 csv 文件,其中包括整個月的“Hello World”和“Hello World2”等。 在月底,我想在一個名為 Jan2016.csv、Feb2016.csv 的大 csv 文件中編譯所有語句
日期聲明
2016/01/01 你好世界
2016/01/01 你好世界2
2016/01/02 你好世界2
……
2016/02/30 你好世界31
我們可以創建一個編寫器 function 並將其與foreachPartition
一起使用。 這是一個例子。
# input dataframe
spark.sparkContext.parallelize(data_ls).toDF(['dt', 'statement']). \
withColumn('dt', func.col('dt').cast('date')). \
show()
# +----------+------------+
# | dt| statement|
# +----------+------------+
# |2016-01-01| hello world|
# |2016-01-01|hello world2|
# |2016-01-03| hello world|
# |2016-01-02|hello world2|
# +----------+------------+
創建 function 將值寫入文件
def write_to_csv(theRow):
for i, row in enumerate(theRow):
dt, statement, fname = row
if i == 0:
txt = open(r"./drive/MyDrive/{0}.txt".format(fname), "w")
txt.write(statement)
txt.close()
else:
txt = open(r"./drive/MyDrive/{0}.txt".format(fname), "a")
txt.write('\n')
txt.write(statement)
txt.close()
在 foreachPartition 中使用前面提到的foreachPartition
。
spark.sparkContext.parallelize(data_ls).toDF(['dt', 'statement']). \
withColumn('dt', func.col('dt').cast('date')). \
withColumn('fname', func.date_format('dt', 'yyyyMMdd')). \
repartition('dt'). \
foreachPartition(write_to_csv)
如果您的節點可以訪問該位置,則文件現在應該存在於那里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.