2012-09-15 35 views
1

我有如下蜂房聲明:使用分區列的Hive查詢不檢索所有記錄。爲什麼?

INSERT INTO TABLE myTable partioned (myDate) SELECT * from myOthertable 

myOthertable包含100萬條記錄,並在執行上面的插入,不是所有的行插入myTable。因爲這是一個SELECT *查詢,沒有任何WHERE子句理想情況下,插入應該爲從myOthertablemyTable的所有行完成。它在插入時會忽略一些行。

任何人都可以提出爲什麼會發生這種情況嗎?

+0

儘量不要使用INSERT INTO,而是INSERT OVERWRITE。還明確列出您的列名稱,並確保存在名爲myDate的列。 – Bryan

回答

0

問題可能是由於,如果表足夠大,上面的查詢不會工作似乎是由於初始地圖​​任務上創建的文件數量較大。

因此,在這種情況下,在地圖處理的蜂巢查詢中分組記錄,並在減少方處理它們。你可以在你的配置單元查詢中使用DISTRIBUTE BY來實現它。以下是查詢。

FROM myOthertable 
INSERT OVERWRITE TABLE myTable(myDate) 
SELECT other1, other2 DISTRIBUTE BY myDate; 

This link may help

相關問題