簡體   English   中英

帶有分區的外部 Hive 表不讀取文件

[英]External Hive Table with Partition not reading the file

我創建了如下所示的外部配置單元表並嘗試讀取該位置中的文件。

樣本輸入:

c1,c2,c3,c4,c5
ass,adda,ada,er,asa
asdasd,asd,asas,qwqw,dfdf

帶分區的擴展表

create external table tablename(field3 varchar(50), field4 varchar(50), filed5 varchar(50))
partitioned by (field1 varchar(50), field2 varchar(50))
ROW FORMAT DELIMITED
fields terminated by ','
lines terminated by '\n'
location '/path/to/Folder/'
tblproperties ("skip.header.line.count"="1");

文件夾位置只有一個 csv 文件,它有 5 列和 1k 行

在我嘗試運行select查詢時創建表后,沒有顯示任何結果。

然后我嘗試創建外部表不像下面這樣分區,並在運行select查詢時獲取輸出。

create external table tablename(field1 varchar(50), field2 varchar(50),field3 varchar(50), field4 varchar(50), filed5 varchar(50))
    ROW FORMAT DELIMITED
    fields terminated by ','
    lines terminated by '\n'
    location '/path/to/Folder/'
    tblproperties ("skip.header.line.count"="1");

我不知道我在哪里做錯了。 我對蜂巢很陌生。 所以請幫助我。

據我所知,當您將其他非 hive 數據/表中的數據加載到 hive 時,hive 會采用源數據中的字段順序。 因此,如果對 hive 表進行了分區,則只能將源數據中的最后一列用作分區。

在您的情況下,我不確定為什么您沒有得到任何輸出,盡管輸出會是錯誤的,因為您的分區表中的field1將是field4field2將是field5

我知道的唯一間接方法(不好)是先創建非分區表,然后將數據從非分區表復制到分區表。 如果它占用了大量空間(盡管稍后您將刪除未分區的表),那么我猜您需要更改源數據以獲取分區字段。

使用以下命令Msck repair table <db_name>.<table_name> ,如果有關表的元數據尚不存在,則會將有關 hive 表的元數據添加到 hive Metastore。

暫無
暫無

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

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