2016-11-04 31 views
0

我有一個hdfs目錄,因爲我有這麼多的文件。這個目錄正在獲取連續的數據。現在我所嘗試的是爲HDFS位置創建一個外部分區表as,如何爲Hive的分區表指定HDFS位置

create external table sensor_data(sensor_name string,alert_type string,isvalid_alert boolean,value string,alert_generated_time bigint) 
partitioned by (mac_id string) 
clustered by(sensor_name) into 13 buckets 
row format delimited 
fields terminated by '|' 
lines terminated by '\n' 
location '/user/test'; 

表正在創建成功,但選中時卻沒有顯示任何內容。 select * from sensor_data where mac_id ='mac_id2'; select * from sensor_data;

我試過這兩種方式,我所缺少的是不能理解的。請幫助我。

回答

1

在蜂巢分區表具有特定的結構:

在餐桌上的位置/user/test你必須有一個文件夾的每個分區:

/user/test/mac_id=1 
/user/test/mac_id=2 
... 

此外,當您創建新的文件夾/分區 - 你需要通過運行更新表元數據MSCK REPAIR TABLE sensor_data

請注意,數據必須包含您定義的分隔符。

此外,由於您的表是羣集的,您需要將數據進行羣集。

我建議首先使用hive的INSERT INTO TABLE將數據插入此表中,以查看數據的正確格式。