我有一个复杂的/嵌套的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)