首页 > 解决方案 > 分区的 ORC 表在 Hive 中显示为空

问题描述

我已经将 Spark 数据框写入分区ORC文件,如下所示:

df.repartition("LOADED")\
  .write\
  .partitionBy("LOADED")\
  .format("orc")\
  .save("location")

一切都在磁盘上正确。之后,我想从中创建一个 Hive 表,例如:

CREATE TABLE table USING ORC LOCATION 'location'

该命令运行没有任何错误。但是,如果我尝试查询该表,它是空的。

我试过在不分区的情况下做同样的事情,它工作得很好。我究竟做错了什么?分区文件夹如下所示:LOADED=2019-11-16

供参考:我想将数据写入 Azure Blob 存储,并在不同的集群中从中创建 Hive 表。

标签: apache-sparkpysparkhivepartitioningorc

解决方案


在这种情况下,您正在将数据直接写入location非 hiveQL 语句,我们需要使用以下命令从 hive/spark 更新 hive 表的元数据:

msck repair table <db_name>.<table_name>;

(或者)

alter table <db_name>.<table_name> add partition(`LOADED`='<value>') location '<location_of the specific partition>';

然后运行以下命令列出表中的分区:

show partitions <db_name>.<table_name>;

推荐阅读