大家。这是与蜂巢的互动:
hive> show partitions TABLENAME
pt=2012.07.28.08/is_complete=1
pt=2012.07.28.09/is_complete=1
pt=2012.07.28.10/is_complete=1
pt=2012.07.28.11/is_complete=1
hive> select * from TABLENAME where pt='2012.07.28.10/is_complete=1' limit 1;
OK
Time taken: 2.807 seconds
hive> select * from TABLENAME where pt='2012.07.28.10' limit 1;
OK
61806fd3-5535-42a1-9ca5-91676d0e783f 1.160.243.215.1343401203879.1 2012-07-28 23:36:37
Time taken: 3.8 seconds
hive>
我的问题是为什么第一个选择无法获取数据?
答案 0 :(得分:19)
“is_complete”是一个与“pt”类似的列,因此正确的查询是:
select * from TABLENAME where pt='2012.07.28.10' and is_complete='1' limit 1;
答案 1 :(得分:0)
如果您使用的是Ambari,则可以按以下方式查询
select * from TABLE NAME WHERE PARTITION NAME and AND ANOTHER PARTITION NAME LIMIT 10
此处分区与表相关联,因此我们直接将其视为表进行查询(类比简单)。这里的“ /”符号告诉它另一个文件夹目录。每个分区表数据将存储在关联的目录中。例如,如果我们有类似
的分区year=2017/month=11/day=1/part=1
然后我们可以使用
select * from TABLE NAME where year=2017 AND month=11 AND day=1 AND part=1 LIMIT 10;