目前,当我使用paritionBy写入HDFS时:DF.write.partitionBy(“id”)
我将得到输出结构(这是默认行为)
../ ID = 1 /
../ ID = 2 /
../ ID = 3 /
我想要一个看起来像这样的结构:
../一个/
../ B /
../ C /
这样
if id = 1, then a
if id = 2, then b
..等等
有没有办法更改文件名输出?如果没有,最好的方法是什么?
答案 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手动重命名分区。