次の Hive コードは、追加のサブフォルダーの下にデータの保存を突然開始しました。
DROP TABLE IF EXISTS folder_test;
CREATE EXTERNAL TABLE IF NOT EXISTS folder_test (
col1 STRING,
col2 INT,
col3 INT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
LOCATION 's3n://bucket_name/folder_name'
;
insert overwrite table folder_test
select col1, col2, col3
from data_table
limit 10;
したがって、データは「s3n://bucket_name/folder_name」にあるのではなく、「s3n://bucket_name/folder_name/-ext-10000」に保存されています。
テーブルが新しい場所で再定義されない限り、このテーブルに対するクエリの結果は 0 行になります。
キーワード「overwrite」を「into」に変更すると問題は解決しますが、最近まで正常に動作していた何百ものスクリプトを再検討する必要があります。
AMI 2.3.6 で Hadoop 1.0.3、Hive 0.10.0 (AWS のものではない Apache バージョン) を実行しています。以前に機能していた技術スタックへの唯一の変更は、AMI 2.2.1 からの移行であり、それまでは認識していませんでした。私たちが作っていました。
なぜこれが起こっているのですか? どうすれば修正できますか?