Spark:PartitionBy,更改输出文件名

时间:2017-07-17 22:36:38

标签: apache-spark pyspark hdfs spark-dataframe

目前,当我使用paritionBy写入HDFS时:DF.write.partitionBy(“id”)

我将得到输出结构(这是默认行为)

../ ID = 1 /

../ ID = 2 /

../ ID = 3 /

我想要一个看起来像这样的结构:

../一个/

../ B /

../ C /

这样

if id = 1, then a
if id = 2, then b

..等等

有没有办法更改文件名输出?如果没有,最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

您无法使用Spark的partitionBy来实现这一目标。

相反,您必须将DataFrame分解为其组件分区,并逐个保存,如下所示:

base = ord('a') - 1
for id in range(1, 4):
    DF.filter(DF['id'] == id).write.save("..." + chr(base + id))
}

或者,您可以使用Spark的partitionBy工具编写整个数据框,然后使用HDFS API手动重命名分区。