ale*_*lov 5 apache-spark apache-spark-sql orc
在 Spark 中读入 ORC 文件时,如果在路径中指定分区列,则该列将不会包含在数据集中。例如,如果我们有
val dfWithColumn = spark.read.orc("/some/path")
val dfWithoutColumn = spark.read.orc("/some/path/region_partition=1")
Run Code Online (Sandbox Code Playgroud)
那么 dfWithColumn 将有一个 region_partition 列,但 dfWithoutColumn 不会。我如何指定我要包含所有列,即使它们已分区?
我在 Scala 上使用 spark 2.2。
编辑:这是一个可重用的 Spark 程序,它将从命令行接收参数;即使用户传入表的特定分区而不是整个表,我也希望程序能够工作。因此,使用 Dataset.filter 不是一种选择。
不要在路径中添加分区列,而是将它们添加为过滤器。将您的代码修改为 -
val dfWithColumn = spark.read.orc("/some/path/").where($"region_partition" === 1)
Run Code Online (Sandbox Code Playgroud)
这将正确识别架构,并且仅读取“region_partition = 1”目录的数据。
| 归档时间: |
|
| 查看次数: |
4041 次 |
| 最近记录: |