這裏是我的方案:從S3存儲桶中的文件夾的一個蜂巢S3數據插入不斷覆蓋數據
我加載數據。我們稱這個桶爲'new_data'。
CREATE EXTERNAL TABLE NEW_DATA (COL1串)來終止BY '\ T' LOCATION行格式分隔字段 'S3,//一些桶/文件夾'
接下來,我從在其他文件夾中加載數據S3,我們稱之爲'data_already_imported'。
CREATE EXTERNAL TABLE data_already_imported(COL1串)來終止BY '\ T' LOCATION 行格式分隔字段 'S3,//一些桶/另一個文件夾'
然後,我發現之間的差NEW_DATA和data_already_imported
創建 ( 選擇N AS SELECT *表差。* FROM NEW_DATAñ LEFT OUTER JOIN data_already_imported舊 ON n.col1 = old.col1 WHERE old.col1 IS NULL )i;
現在,我想把這個'差異'移到data_already_imported文件夾中。目前我有
INSERT INTO TABLE data_already_imported
SELECT * FROM difference;
問題是這覆蓋data_already_imported中已存在的數據。注:我也嘗試過INSERT OVERWRITE
。有人可以請指出我在這裏做錯了什麼嗎?
感謝您的答覆拉森。這是我的想法,但只是想檢查是否有一種方法來追加記錄。無論如何,接受答案。謝謝! – test123
實際上可以通過手動將文件添加到包含該表的HDFS目錄(可能類似於「apps/hive/warehouse/table_name」)來附加記錄。你必須小心這樣做,特別是如果涉及分區,或者你可以認真弄亂你的桌子。除非你絕對需要表現,否則請與拉森的解決方案一起去。 –