私は1000以上のパーティションを持つテーブルを持っています。ハイブ:テーブルのすべてのパーティションを表示する方法は?
"Show partitions
"コマンドでは、少数のパーティションしか表示されません。
どのようにすべてのパーティションを表示できますか?
更新:
私は "
show partitions
" コマンドは、正確に500のパーティションを一覧表示しました。「
select ... where ...
」は500個のパーティションのみを処理します。
私は1000以上のパーティションを持つテーブルを持っています。ハイブ:テーブルのすべてのパーティションを表示する方法は?
"Show partitions
"コマンドでは、少数のパーティションしか表示されません。
どのようにすべてのパーティションを表示できますか?
更新:
私は "show partitions
" コマンドは、正確に500のパーティションを一覧表示しました。
「select ... where ...
」は500個のパーティションのみを処理します。
出力が表示されるときにCLIに制限があります。私は、ローカルのファイルに出力をエクスポートすることをお勧め:
$hive -e 'show partitions table;' > partitions
あなたは「パーティション」の表にパーティション情報、ハイブメタストアのテーブルを見ることができます。 "TBLS" join "Partition"を使用して、特別なテーブルパーティションをクエリできます。
これは、derbyではなくmetastore用にmysqlを設定したと仮定して、wmkyの答えを&以上に拡張して書いています。
select PART_NAME FROM PARTITIONS WHERE TBL_ID=(SELECT TBL_ID FROM TBLS WHERE TBL_NAME='<table_name>');
上記のクエリは、すべての可能性のあるパーティション列の値を示します。
例:
hive> desc clicks_fact;
OK
time timestamp
..
day date
file_date varchar(8)
# Partition Information
# col_name data_type comment
day date
file_date varchar(8)
Time taken: 1.075 seconds, Fetched: 28 row(s)
私は、パーティション列の値を取得するつもりです。
mysql> select PART_NAME FROM PARTITIONS WHERE TBL_ID=(SELECT TBL_ID FROM TBLS WHERE TBL_NAME='clicks_fact');
+-----------------------------------+
| PART_NAME |
+-----------------------------------+
| day=2016-08-16/file_date=20160816 |
| day=2016-08-17/file_date=20160816 |
....
....
| day=2017-09-09/file_date=20170909 |
| day=2017-09-08/file_date=20170909 |
| day=2017-09-09/file_date=20170910 |
| day=2017-09-10/file_date=20170910 |
+-----------------------------------+
1216 rows in set (0.00 sec)
すべてのパーティション列を返します。
注DB_ID
ON JOIN
テーブルDBS
関与DB(すなわち、複数のDBのは、同一のテーブル名を有する)CLIとして
同じ結果があります。 500パーティションしか表示されません。私はどこからマジックナンバー500を知りませんか? –
それからいい考えはありません。それは非常に奇妙です。もしあなたがそれを解決したり、その源を見つけたら、私たちに知らせてください。 GL!おそらくナイーブですが、500以上のパーティションがあると確信していますか? – www
"set cassandra.connection.sliceSize = 10000;"によって解決される問題。たぶんそれはハイブのデータストアの外出です。 –