【发布时间】:2019-02-17 13:15:30
【问题描述】:
在 Spark 中读取 ORC 文件时,如果在路径中指定分区列,则该列将不会包含在数据集中。例如,如果我们有
val dfWithColumn = spark.read.orc("/some/path")
val dfWithoutColumn = spark.read.orc("/some/path/region_partition=1")
那么 dfWithColumn 将有一个 region_partition 列,但 dfWithoutColumn 不会。如何指定我想要包含所有列,即使它们已分区?
我在 scala 上使用 spark 2.2。
编辑:这是一个可重复使用的 Spark 程序,它将从命令行接收其参数;即使用户传入表的特定分区而不是整个表,我也希望程序能够工作。因此,使用 Dataset.filter 不是一种选择。
【问题讨论】:
-
如果第二行的目的是只获取该分区的数据,为什么不使用列信息过滤DF?由于 DF 是惰性求值的,谓词会被下推,并且没有读取整个文件的开销
-
我对问题的解释与 tgecanswers 不同
标签: apache-spark apache-spark-sql orc