我有一个包含几列的表,其中一些是数组 . 从Spark 1.6升级到Spark 2.0.1后,在DataFrame中读取时,数组字段始终为null .

编写Parquet文件时,列的架构指定为

StructField("packageIds",ArrayType(StringType)).

Hive Metastore中列的架构是

packageIds array<string>

编写器中使用的模式与Metastore中的模式完全匹配

查询是一个简单的“选择*”

spark.sql("select * from tablename limit 1").collect() // null columns in Row

我该如何调试此问题?我已经研究过的值得注意的事情:

  • 它适用于火花1.6

  • 我用镶木地板工具检查了镶木地板文件,可以查看数据 .

  • 我还有另一个以完全相同的方式编写的表,它没有问题 .