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

时间:2015-10-01 20:02:07

标签: hadoop hive out-of-memory

我使用以下查询测试了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;

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

  

错误:运行任务时失败:java.lang.RuntimeException:java.lang.OutOfMemoryError:Java堆空间   在org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor(TezProcessor.java:157)   在org.apache.hadoop.hive.ql.exec.tez.TezProcessor.run(TezProcessor.java:137)

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

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

4 个答案:

答案 0 :(得分:0)

首先我增加了tez.runtime.io.sort.mb,但我得到了这个错误:tez.runtime.io.sort.mb应该大于0并且应该小于可用的任务内存

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

答案 1 :(得分:0)

在此Hadoop Hello World tutorial中将卡车表创建为ORC时出现了同样的错误。您可以尝试使用以下方法压缩ORC存储:

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

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

答案 2 :(得分:0)

答案 3 :(得分:-1)

尝试了许多解决方案,而不是工作。现在正在使用这项工作 -

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