为什么读取文件时会收到“partition values: [empty row]”日志消息?

Why do I get "partition values: [empty row]" log messages when reading a file?

提问人:zyxue 提问时间:11/29/2017 最后编辑:Piotr Góralczykzyxue 更新时间:8/7/2018 访问量:11122

问:

我正在使用 Spark SQL 读取 csv,我也收到很多这样的消息:

...some.csv, range: 20971520-24311915, partition values: [empty row]

为什么说它是空行?分区真的是空的吗?

apache-spark apache-spark-sql

评论


答:

24赞 Piotr Góralczyk 8/7/2018 #1

文件和从文件中读取数据的 Spark 分区都不为空。

由于以下两点,日志消息可能有点令人困惑:

  • 消息中的单词 partition 指的是 Hive 样式的分区,即可以具有多个值的命名分区列。这些分区可以从您的目录结构中推断出来,例如,因为它们将是 、 和 ,以及它们的值:、 和 。如果外部表已分区,它们也可以来自 Hive 元存储/path/to/partition/a=1/b=hello/c=3.14abc1hello3.14
  • 记录的分区值包装在 InternalRow 中,而不是包装在集合中。

在您的例子中,目录结构是扁平的,或者它不包含分区名称(例如),因此没有 Hive 样式的分区,因此您会在消息中看到。/path/to/partition/1/hello/3.14[empty row]