PysparkSQL数据框-将数据框拆分为多个文件

时间:2020-04-07 15:13:12

标签: apache-spark pyspark pyspark-sql

我正在使用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打印到文件路径,但找不到解决方案。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用分区来保存数据框,例如:

df.coalesce(1).write.partitionBy('LU').format('csv').option('header','true').save(file-path)