hli*_*hli 5 hdfs apache-spark apache-spark-sql pyspark
目前,当我使用paritionBy()写入 HDFS 时:
DF.write.partitionBy("id")
Run Code Online (Sandbox Code Playgroud)
我将得到如下输出结构(这是默认行为):
../id=1/
../id=2/
../id=3/
Run Code Online (Sandbox Code Playgroud)
我想要一个看起来像这样的结构:
../a/
../b/
../c/
Run Code Online (Sandbox Code Playgroud)
这样:
if id = 1, then a
if id = 2, then b
.. etc
Run Code Online (Sandbox Code Playgroud)
有没有办法改变文件名输出?如果没有,最好的方法是什么?
您将无法使用 SparkpartitionBy来实现此目的。
相反,您必须将其分解DataFrame为各个组件分区,然后将它们一一保存,如下所示:
base = ord('a') - 1
for id in range(1, 4):
DF.filter(DF['id'] == id).write.save("..." + chr(base + id))
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用 Spark 的工具写入整个数据帧partitionBy,然后使用 HDFS API 手动重命名分区。
| 归档时间: |
|
| 查看次数: |
4001 次 |
| 最近记录: |