web-dev-qa-db-ja.com

ハイブでTABLEを作成した後にPARTITIONを追加します

非パーティションテーブルを作成し、テーブルにデータをロードしましたが、そのテーブルに部門に基づいてPARTITIONを追加したいのですが、これを実行できますか?私が行った場合:

ALTER TABLE Student ADD PARTITION (dept='CSE') location '/test';

それは私にエラーを与えます:

FAILED: SemanticException table is not partitioned but partition spec exists: {dept=CSE}

助けてください。ありがとう

16

まず、テーブルにパーティション列がないように、テーブルを作成します。

create external table Student(col1 string, col2 string) partitioned by (dept string) location 'ANY_RANDOM_LOCATION';

テーブルの作成が完了したら、次のようにテーブルを変更してパーティション部門を追加します。

alter table Student add partition(dept ='cse') location '/test';

これが役立つことを願っています。

8
Naresh

テーブルの作成中にパーティションを定義しなかった場合、テーブルパーティションを変更することはできません。

パーティションを追加するためにパーティション化されていないテーブルを変更するときに、「セマンティック例外テーブルはパーティション化されていないがパーティション仕様は存在します:{dept = CSE}」というエラーが表示される場合、パーティションをテーブル自体に含めようとしていることを意味します。

コマンドの構文が正しく、パーティション列の変更に使用されるため、構文エラーは発生していません。

Hiveテーブルの詳細:

https://www.dezyre.com//hadoop-tutorial/Apache-Hive-tutorial-tables

表で可能な代替を確認することもできます。

https://sites.google.com/site/hadoopandhive/home/how-to-create-table-partition-in-Hive

お役に立てれば。

5
Abhijit Kumar