如何在路径中没有分区前缀的情况下编写分区的DataFrame?

时间:2017-09-21 11:51:44

标签: scala apache-spark apache-spark-sql

我有代码:

dataFrame.write
  .partitionBy("format", "dataset", "year", "month", "day", "hour")
  .format(outputFormat)
  .mode("overwrite")
  .save(outputPath)

提供如下输出:enter image description here

如何在没有前缀的情况下编写dataFrame?不重命名。有没有办法通过Spark或hadoop配置来做到这一点?目前我正在使用单独的bash-script重命名文件夹。

要清楚,我想使用Spark代码获取下一个结构:

data
-+parquet
   +main
     +2017
        +01
         +31
           +15

1 个答案:

答案 0 :(得分:4)

你不能这样做。

如果您查看Spark代码,类ExternalCatalogUtils.getPartitionPathString,您会看到:

def getPartitionPathString(col: String, value: String): String = {
    val partitionString = if (value == null || value.isEmpty) {
      DEFAULT_PARTITION_NAME
    } else {
      escapePathName(value)
    }
    escapePathName(col) + "=" + partitionString
}

所以该计划总是像column=value