簡體   English   中英

Hive 從帶分區的文件創建表

[英]Hive create table from file with partition

我遇到了一個我無法完全理解的奇怪的 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 時,我可以看到文件中的所有數據。

我不明白的是為什么我需要使用修復才能看到表中的數據。

PS 使用 LOAD INTO TABLE 可以完美運行,無需任何維修。

這可能與 DROP TABLE 刪除所有表分區的元數據的情況有關。 但是 CREATE TABLE 不會在 Metastore 中重新創建此信息。 因此,在發出 CREATE TABLE Hive 后還不知道有分區並且其中有數據。 MSCK REPAIR TABLE 在 Metastore 中重新創建此信息(或者您可以使用 ALTER TABLE tbl ADD PARTITION 手動執行此操作)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM