Spark:你能在输出文件中包含分区列吗?

Posted

技术标签:

【中文标题】Spark:你能在输出文件中包含分区列吗?【英文标题】:Spark: can you include partition columns in output files? 【发布时间】:2018-01-10 14:54:39 【问题描述】:

我正在使用 Spark 将数据写入分区。给定一个包含两列 (foo, bar) 的数据集,如果我这样做 df.write.mode("overwrite").format("csv").partitionBy("foo").save("/tmp/output"),我会得到一个输出

/tmp/output/foo=1/X.csv
/tmp/output/foo=2/Y.csv
...

但是,输出 CSV 文件仅包含 bar 的值,而不包含 foo。我知道foo 的值已经在目录名称foo=N 中捕获,但是否可以在CSV 文件中也包含foo 的值?

【问题讨论】:

【参考方案1】:

仅当您使用不同的名称制作副本时:

(df
    .withColumn("foo_", col("foo"))
    .write.mode("overwrite")
    .format("csv").partitionBy("foo_").save("/tmp/output"))

【讨论】:

以上是关于Spark:你能在输出文件中包含分区列吗?的主要内容,如果未能解决你的问题,请参考以下文章

我们可以展平 Hive 表中包含 Json 作为值的列吗?

在 SBT 生成的胖 JAR 中包含 Spark 包 JAR 文件

Python 如果文件a中包含文件b,则将文件b的记录打印出来输出到c文件里

在 VC++(VS2010) 项目输出中包含 DLL

Scala Spark - 如何减少在单列中包含多列的数据帧?

无分区列性能的 Spark 下推过滤器