我正在使用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
谢谢
答案 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命令将文件移动到新目录。