【问题标题】:Spark not using partition information from Hive partitioned external tableSpark 不使用 Hive 分区外部表中的分区信息
【发布时间】:2020-01-21 07:23:05
【问题描述】:

我有一个复杂/嵌套的 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 查询表时可以看到它。我在尝试加载时也可以看到分区列使用 pyspark 的 avro 文件:

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

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

【问题讨论】:

    标签: scala apache-spark pyspark hive


    【解决方案1】:

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

    option("avroSchema", pegIndivSchema)
    

    【讨论】:

      猜你喜欢
      • 2019-12-29
      • 2023-03-19
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      相关资源
      最近更新 更多