我正在使用2.5.4版以上的pyspark sql函数。我在pyspark.sql.dataframe中有以下数据:
df = spark.createDataFrame(
[
(302, 'foo'), # values
(203, 'bar'),
(202, 'foo'),
(202, 'bar'),
(172, 'xxx'),
(172, 'yyy'),
],
['LU', 'input'] # column labels
)
display(df)
我想为每个“ LU”创建一个单独的csv文件。因此,csv将如下所示:
LU_302.csv
LU_302 = spark.createDataFrame(
[
(302, 'foo'), # values
],
['LU', 'input'] # column labels
)
LU_203.csv
LU_203 = spark.createDataFrame(
[
(203, 'bar'), # values
],
['LU', 'input'] # column labels
)
LU_202.csv
LU_202 = spark.createDataFrame(
[
(202, 'foo'), # values
(202, 'bar'), # values
],
['LU', 'input'] # column labels
)
LU_172.csv
LU_202 = spark.createDataFrame(
[
(172, 'xxx'), # values
(172, 'yyy'), # values
],
['LU', 'input'] # column labels
)
我这里分开的数据帧是spark数据帧,但我希望它们位于csv中-这仅出于说明目的。
因此您可以看到使用'LU'变量将数据框拆分为单独的数据框。我一直在研究如何使用在数据帧上运行的while循环来执行此操作,并将新的csv打印到文件路径,但找不到解决方案。
谢谢
答案 0 :(得分:1)
您可以使用分区来保存数据框,例如:
df.coalesce(1).write.partitionBy('LU').format('csv').option('header','true').save(file-path)