我使用以下查询测试了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.它不起作用。
答案 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)
他们也同意Sandbox中的问题...... https://community.hortonworks.com/questions/34426/failure-to-execute-hive-query-from-lab-2.html#comment-35900
答案 3 :(得分:-1)
尝试了许多解决方案,而不是工作。现在正在使用这项工作 -
CREATE TABLE avg_mileage (truckid STRING,avgmpg BIGINT ) STORED AS ORC;