我有一个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;
我尝试了这两种方式,我所缺少的是无法理解的。请帮助我。
答案 0 :(得分:1)
hive中的分区表具有特定的结构:
在表格位置/user/test
,您必须为每个分区都有一个文件夹:
/user/test/mac_id=1
/user/test/mac_id=2
...
此外,当您创建新文件夹/分区时 - 您需要通过运行MSCK REPAIR TABLE sensor_data
来更新表元数据
请注意,数据必须包含您定义的分隔符。
此外,由于您的表是群集的,因此您需要对数据进行群集。
我建议先使用hive的INSERT INTO TABLE
将数据插入此表,以查看正确的数据格式。