使用分区列的Hive查询不会检索所有记录。为什么?

时间:2012-09-15 02:42:35

标签: hive

我有一个Hive声明如下:

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

myOthertable包含100万条记录,在执行上述插入时,并非所有行都插入myTable。由于理论上这是一个SELECT *个查询而没有任何WHERE子句,因此应该对从myOthertablemyTable的所有行执行插入操作。它在插入时忽略了一些行。

有谁能说明为什么会这样?

1 个答案:

答案 0 :(得分:0)

问题可能是由于,如果表足够大,上面的查询将无法工作,似乎是由于在初始地图任务上创建的文件数量较多。

因此,在这种情况下,将hive查询中的记录分组到地图流程上并在reduce侧处理它们。您可以使用DISTRIBUTE BY在您的配置单元查询中实现相同的功能。以下是查询。

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

This link may help