无法查看 hive 分区表中的数据

Posted

技术标签:

【中文标题】无法查看 hive 分区表中的数据【英文标题】:Cannot view data in hive partition table 【发布时间】:2017-12-19 19:24:47 【问题描述】:

我有一个外部表,它有一个名为 rundate 的分区列。我可以使用

将数据加载到表中
DataFrame.write.mode(SaveMode.Overwrite).orc("s3://test/table")

然后我使用

创建一个分区
spark.sql("ALTER TABLE table ADD IF NOT EXISTS PARTITION(rundate = '2017-12-19')")

代码运行良好,我可以看到分区。但我看不到 Hive 表中的数据。

【问题讨论】:

【参考方案1】:

您没有将分区数据保存在正确的文件夹结构中,并且还手动添加了数据不存在的分区。

两件事: 1.首先确保您将数据保存在创建外部表的位置,并且文件夹结构与hive期望的相同。例如,假设您的外部表名称为table,分区列为rundate,分区值为2017-12-19,外部表指向位置s3://test/table。然后保存分区2017-12-19的数据如下:

DataFrame.write.mode(SaveMode.Overwrite).orc("s3://test/table/rundate=2017-12-19/")

2.一旦保存成功,下面的命令用最新添加的分区更新配置单元的元存储。

synatx: msck repair table <tablename>
msck repair table table

【讨论】:

以上是关于无法查看 hive 分区表中的数据的主要内容,如果未能解决你的问题,请参考以下文章

hive表分区的修复

hive外部表分区

hive中怎么删除表中的部分数据

hive中怎样删除分区

hive中怎么删除表中的部分数据

hive扫描分区不超过400个