即使有两行,蜂巢也会内存不足

Hive out of memory even with two rows

我使用以下查询测试了 Hive:

create table test (key string, value string) stored as orc;
insert into table test values ('a','a'), ('b','b');
select key, count(*) from test group by key;

我遇到了内存不足的错误:

Error: Failure while running task:java.lang.RuntimeException: java.lang.OutOfMemoryError: Java heap space at org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor(TezProcessor.java:157) at org.apache.hadoop.hive.ql.exec.tez.TezProcessor.run(TezProcessor.java:137)

我在网上搜索过,但人们在处理一些较大的文件时通常会遇到此错误。以我为例,文件只有两行,而我的电脑有14G内存。

我已经将 /etc/hadoop/conf/hadoop-env.sh HADOOP_HEAPSIZE 设置为 1024。它不起作用。

首先我增加了tez.runtime.io.sort.mb,但我得到了这个错误:tez.runtime.io.sort.mb should be greater than 0 and should be less than the available task memory

然后我按照@Hellmar Becker 的建议增加了hive.tez.java.opts(和其他一些参数)。这解决了问题。

我在 Hadoop Hello World tutorial 中创建卡车 table 作为 ORC 时遇到了同样的错误。您可以尝试使用以下方法压缩 ORC 存储:

CREATE TABLE XXX STORED AS ORC TBLPROPERTIES ("orc.compress.size"="1024");

我希望这能有所帮助(对我来说,它有效)。

尝试了很多解决方案,都没有用。暂时使用此解决方法 -

CREATE TABLE avg_mileage (truckid STRING,avgmpg BIGINT ) STORED AS ORC;

他们也同意它在沙盒中的问题... https://community.hortonworks.com/questions/34426/failure-to-execute-hive-query-from-lab-2.html#comment-35900