如何为Hive的分区表指定HDFS位置

时间:2016-11-04 12:52:33

标签: hadoop hive

我有一个hdfs目录,因为我有这么多文件。这个目录正在获取连续数据。现在我正在尝试为该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,其中mac_id =' mac_id2&#39 ;; select * from sensor_data;

我尝试了这两种方式,我所缺少的是无法理解的。请帮助我。

1 个答案:

答案 0 :(得分:1)

hive中的分区表具有特定的结构:

在表格位置/user/test,您必须为每个分区都有一个文件夹:

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

此外,当您创建新文件夹/分区时 - 您需要通过运行MSCK REPAIR TABLE sensor_data来更新表元数据

请注意,数据必须包含您定义的分隔符。

此外,由于您的表是群集的,因此您需要对数据进行群集。

我建议先使用hive的INSERT INTO TABLE将数据插入此表,以查看正确的数据格式。