2015-11-11 133 views
0

我是自hive 0.14以來支持的hive交易的新手。Hive 0.14創建交易表

我在蜂房創建的事務表如下

創建表test_transactional(ID INT,名稱串)由存儲爲獸人TBLPROPERTIES(ID) 成2段( '交易'= '真' 羣集);

我還創建了一些表格,其中包含id,string列的一些示例數據。

create table stage(id int,name string)ROW FORMAT DELIMITED FIELDS TERMINATED BY',';

然後我插入從階段表中的數據到test_transactional表如下,

插入到表test_transactional選擇來自階段*;

我也跑了一個更新語句,看看它的工作。到現在爲止還挺好。

問題

  1. 當我這樣做對test_transactional表HDFS文件夾中的LS,我沒有看到基礎文件夾,但只有增量文件夾中。根據文檔,我的理解是基文件夾應該存在。或者僅當主要壓縮運行時纔會創建基礎文件夾?

  2. 更新/插入/刪除語句顯式運行時更新表,但在典型的ETL中,當我在暫存表中有數據時,如何確定其更新,插入或刪除?我是否需要設置一些屬性,以便配置單元可以自動執行此操作?如果不是這樣如何處理?

回答

0
  1. 是的,你是主要的壓實運行僅在創建正確的基礎文件夾。 可以手動通過燒成以下命令運行它

ALTER TABLE [表名]分區[分區名稱]緊湊= '主要'

  • 我們應該有3列(createdon,modifiedon,deleteflag)分別在基本系統中跟蹤(插入,更新,刪除)從我們將數據拉入臨時表的位置。
  • 限制:基本系統不應刪除任何記錄,而應設置deleteflag = 1