[英]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.