Hive 配置单元在向表中插入大量数据时混合了一些列值

Hive 配置单元在向表中插入大量数据时混合了一些列值,hive,mapreduce,hdfs,hiveql,Hive,Mapreduce,Hdfs,Hiveql,我有一个名为“xtr_iwm_registration”的配置单元表,其中包括52列和380000多行。其中一个名为“transactionid”的列没有任何空值。我使用以下语句复制了此表: `CREATE TABLE xtr_iwm_registration_copy AS SELECT * FROM xtr_iwm_registration;` 之后,我意识到新表中的列“transactionid”包含1311个空值,尽管总行数与原始表中的行数相同。另一个名为“datasource”的

我有一个名为“xtr_iwm_registration”的配置单元表,其中包括52列和380000多行。其中一个名为“transactionid”的列没有任何空值。我使用以下语句复制了此表:

`CREATE TABLE xtr_iwm_registration_copy AS SELECT * FROM 
 xtr_iwm_registration;`
之后,我意识到新表中的列“transactionid”包含1311个空值,尽管总行数与原始表中的行数相同。另一个名为“datasource”的列在原始表中只有一个不同的值,但在新表中有76个不同的值,其中75个似乎是从其他列中获取的。我发现,hive仅在包含90000行或更高数量的数据时才会以这种方式破坏数据:对于85000行,一切正常,但对于90000行,我在“transactionid”中得到了26个空值。我还尝试将map/reduce内存设置为8GB,并将查询分为两部分,但没有帮助:

`SET mapreduce.map.memory.mb=8192;
 SET mapreduce.reduce.memory.mb=8192;
 CREATE TABLE xtr_iwm_registration_copy AS SELECT * FROM 
 xtr_iwm_registration LIMIT 0;
 INSERT INTO TABLE xtr_iwm_registration_copy SELECT * FROM 
 xtr_iwm_registration;`
此外,配置单元日志中没有错误。我使用hive版本3.1.1。还有其他人面临过这个问题吗

Upd:通过指定SELECT*FROM列的完整列表解决了此问题。。。无法正确处理大量数据:

`SET mapreduce.map.memory.mb=1024;
 SET mapreduce.reduce.memory.mb=1024;
 CREATE TABLE xtr_iwm_registration_copy LIKE xtr_iwm_registration;
 INSERT INTO xtr_iwm_registration_copy (<list of columns separated by 
 comma>) SELECT <list of columns separated by comma> FROM 
 xtr_iwm_registration;`

您可能需要添加源表定义您可能需要添加源表定义