Spark 不使用 Hive 分区外部表中的分区信息



我有一个复杂的/嵌套的Hive-External表,它是在HDFS之上创建的(文件是avro格式(。当我运行 hive 查询时,它会显示所有记录和分区。

但是,当我在 Spark 中使用相同的表时:

val df =  spark
.read
.format("avro")
.load("avro_files")
.option("avroSchema", Schema.toString)

它不显示分区列。

但是,当我使用spark.sql("select * from hive_External_Table")时,它很好,我可以看到它 在创建的数据帧中,但问题是我无法手动传递提供的架构。

请注意,当我查看数据时,分区列不是底层保存数据的一部分,但是当我通过Hive查询表时,我可以看到它。

df = ( sqlContext.read.format("com.databricks.spark.avro").option("avroSchema", pegIndivSchema).load('avro_files'))

所以我想知道那是什么样子的?

请检查您在选项架构部分中使用的Schema.toString值中存在的列。它将缺少分区列。 还可以尝试使用您在 pyspark 代码中使用的相同架构。

option("avroSchema", pegIndivSchema)

最新更新