更改Spark数据帧分区写入的路径

时间:2018-08-23 08:54:04

标签: apache-spark apache-spark-sql

我正在使用partitionBy(part_column)编写数据帧,该数据帧将其写入输出目录中,并将分区划分为output_dir / part_column_name = part_value。

有没有可能以output_dir / part_value的格式编写内容?

当前代码如下

dataframe.write.mode(SaveMode.Overwrite).format("parquet").partitionBy(part_column).save(outputPath)

假设我的分区列是dt。 dt的值为'20180701','20180702'。 如果我执行

dataframe.write.mode(SaveMode.Overwrite).format("parquet").partitionBy("dt").save("/etl/output").

它将创建输出目录为/ etl / output / dt = 20180701和/ etl / output / dt = 20180702

但是我希望它是/ etl / output / 20180701和/ etl / output / 20180702

谢谢

1 个答案:

答案 0 :(得分:0)

根据spark文档,这是所需的行为,spark api中没有选项可以更改目录布局。

请参见下面的网址,并通过api检查分区

https://spark.apache.org/docs/2.3.1/api/java/org/apache/spark/sql/DataFrameWriter.html

如果需要更改布局,则可以使用Shell脚本和Hadoop HDFS命令将文件移动到新目录。