hive在向表中插入大量数据时混合了一些列值

s5a0g9ez  于 2021-06-24  发布在  Hive
关注(0)|答案(0)|浏览(163)

我有一个名为“xtr\u iwm\u registration”的配置单元表,它包含52列和38万多行。其中一个名为“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:通过指定列的完整列表解决了此问题(选择自。。。无法正确处理大量数据):

`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;`

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题