hive使用分区从文件创建表

vecaoik1  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(305)

我遇到了一个奇怪的Hive行为,我不能完全理解。我真希望有人能对那件事有所了解。
我使用以下脚本创建数据并将其添加到表中:

DROP TABLE myTbl;
CREATE EXTERNAL TABLE myTbl (
    Col1 string,
    Col2 string,  
    Col3 string,
    Col4  string,
)
PARTITIONED BY (partition STRING)
LOCATION '${hiveconf:Valid_location_on_aws_s3_with_the_proper_file_to_create_table}';

hive运行脚本返回ok,但是(问题是)表是空的。跑步: select * from myTbl; 不返回任何内容
这个问题的解决方案非常简单,在脚本之后,我运行了以下命令/脚本: MSCK REPAIR TABLE myTbl 现在,在该表上执行select时,我可以看到文件中的所有数据。
我不明白的是为什么我需要使用修复来查看表中的数据。
p、 使用加载到表完美地工作,而不需要任何维修。

u5rb5r59

u5rb5r591#

这可能与drop table删除所有表分区的元数据有关。但是create table不会在metastore中重新创建此信息。所以,在发出create table之后,hive还不知道有分区,并且分区中有数据。msck repair table在metastore中重新创建此信息(也可以使用alter table tbl add partition手动创建)。

相关问题