我有一个名为“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;`
暂无答案!
目前还没有任何答案,快来回答吧!