web-dev-qa-db-fra.com

comment sélectionner les données de Hive avec une partition spécifique?

toutes les personnes. voici les interactions avec la ruche:

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>

Ma question est pourquoi le premier sélectionné ne peut pas obtenir les données?

11
Tim

"is_complete" est une colonne comme "pt", donc la requête correcte est:

select * from TABLENAME where pt='2012.07.28.10' and is_complete='1' limit 1;
18
Paul M

Si vous utilisez Ambari, vous pouvez interroger comme ci-dessous

select * from TABLE NAME WHERE PARTITION NAME and AND ANOTHER PARTITION NAME LIMIT 10

Ici, les partitions sont associées à table, nous interrogeons donc directement en les considérant comme une table (Analogie simple). Ici le symbole "/" indique son autre répertoire de dossiers. Chaque donnée de la table partitionnée sera stockée dans un répertoire associé. Pour ex si nous avons des partitions comme ci-dessous 

year=2017/month=11/day=1/part=1

alors nous pouvons utiliser 

select * from TABLE NAME where year=2017 AND month=11 AND day=1 AND part=1 LIMIT 10;
0
Arun Goudar