web-dev-qa-db-ja.com

特定のパーティションでHiveからデータを選択する方法

全員。 Hiveとの相互作用は次のとおりです。

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>

私の質問は、なぜ最初の選択がデータを取得できないのかということです。

14
Tim

「is_complete」は「pt」と同様の列なので、正しいクエリは次のとおりです。

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

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;
0
Arun Goudar