非パーティションテーブルを作成し、テーブルにデータをロードしましたが、そのテーブルに部門に基づいてPARTITION
を追加したいのですが、これを実行できますか?私が行った場合:
ALTER TABLE Student ADD PARTITION (dept='CSE') location '/test';
それは私にエラーを与えます:
FAILED: SemanticException table is not partitioned but partition spec exists: {dept=CSE}
助けてください。ありがとう
まず、テーブルにパーティション列がないように、テーブルを作成します。
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';
これが役立つことを願っています。
テーブルの作成中にパーティションを定義しなかった場合、テーブルパーティションを変更することはできません。
パーティションを追加するためにパーティション化されていないテーブルを変更するときに、「セマンティック例外テーブルはパーティション化されていないがパーティション仕様は存在します:{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
お役に立てれば。