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

Hive 使用分区列的配置单元查询不会检索所有记录。为什么?,hive,Hive,我有一个蜂巢声明如下: INSERT INTO TABLE myTable partioned (myDate) SELECT * from myOthertable myOthertable包含100万条记录,在执行上述插入时,并非所有行都插入myTable。由于它是一个没有任何WHERE子句的SELECT*查询,理想情况下,应该对从myOthertable到myTable的所有行进行插入。它在插入时忽略某些行 有人能解释为什么会发生这种情况吗?问题可能是由于,如果表足够大,上述查询似乎无法

我有一个蜂巢声明如下:

INSERT INTO TABLE myTable partioned (myDate) SELECT * from myOthertable
myOthertable包含100万条记录,在执行上述插入时,并非所有行都插入myTable。由于它是一个没有任何WHERE子句的SELECT*查询,理想情况下,应该对从myOthertable到myTable的所有行进行插入。它在插入时忽略某些行


有人能解释为什么会发生这种情况吗?

问题可能是由于,如果表足够大,上述查询似乎无法工作,因为在初始映射任务中创建了大量文件

因此,在这种情况下,在映射过程中将配置单元查询中的记录分组,并在reduce端处理它们。您可以使用DISTRIBUTE BY在配置单元查询本身中实现相同的功能。下面是查询

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

尝试不使用“插入到”,而是使用“插入覆盖”。还要显式列出列名,并确保存在名为myDate的列。如何检查是否插入了所有行?如果您使用的是count*,那么这可能是统计数据的问题,请参见此处: