簡體   English   中英

Spark 不使用來自 Hive 分區外部表的分區信息

[英]Spark not using partition information from Hive partitioned external table

我有一個復雜/嵌套的 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") ,它很好,我可以在創建的數據spark.sql("select * from hive_External_Table")看到它,但問題是我無法手動傳遞提供的架構。

請注意,當我查看數據時,分區列不是底層保存數據的一部分,但是我通過Hive查詢表時可以看到它。我嘗試加載avro文件時也可以看到分區列使用pyspark:

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

所以我想知道它是什么樣的?

請檢查您在選項架構部分中使用的Schema.toString值中存在的列。 它會丟失分區列。 還可以嘗試使用您在 pyspark 代碼中使用的相同架構。

option("avroSchema", pegIndivSchema)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM