Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.OutOfMemoryError:带有配置单元的java堆空间_Java_Sql_Hadoop_Netbeans_Hive - Fatal编程技术网

java.lang.OutOfMemoryError:带有配置单元的java堆空间

java.lang.OutOfMemoryError:带有配置单元的java堆空间,java,sql,hadoop,netbeans,hive,Java,Sql,Hadoop,Netbeans,Hive,我使用了hadoop hive 0.9.0和1.1.2以及netbeans, 但是我犯了这个错误,我不能解决这个问题 请帮帮我 代码: 下面的错误 error : commencer la connexion Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at org.apache.thrift.protocol.TBinaryProtocol.readStringBody(TBinaryPr

我使用了hadoop hive 0.9.0和1.1.2以及netbeans, 但是我犯了这个错误,我不能解决这个问题 请帮帮我 代码:

下面的错误

error :
commencer la connexion
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at org.apache.thrift.protocol.TBinaryProtocol.readStringBody(TBinaryProtocol.java:353)
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:215)
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69)
    at org.apache.hadoop.hive.service.ThriftHive$Client.recv_execute(ThriftHive.java:116)
    at org.apache.hadoop.hive.service.ThriftHive$Client.execute(ThriftHive.java:103)
    at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:192)
    at org.apache.hadoop.hive.jdbc.HiveStatement.execute(HiveStatement.java:132)
    at org.apache.hadoop.hive.jdbc.HiveConnection.configureConnection(HiveConnection.java:132)
    at org.apache.hadoop.hive.jdbc.HiveConnection.<init>(HiveConnection.java:122)
    at org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:106)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at hive.Hive_test.main(Hive_test.java:22)
错误:
连接起始器
线程“main”java.lang.OutOfMemoryError中出现异常:java堆空间
位于org.apache.thrift.protocol.TBinaryProtocol.readStringBody(TBinaryProtocol.java:353)
位于org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:215)
位于org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69)
位于org.apache.hadoop.hive.service.ThriftHive$Client.recv_execute(ThriftHive.java:116)
位于org.apache.hadoop.hive.service.ThriftHive$Client.execute(ThriftHive.java:103)
位于org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:192)
位于org.apache.hadoop.hive.jdbc.HiveStatement.execute(HiveStatement.java:132)
位于org.apache.hadoop.hive.jdbc.HiveConnection.configureConnection(HiveConnection.java:132)
位于org.apache.hadoop.hive.jdbc.HiveConnection。(HiveConnection.java:122)
位于org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:106)
位于java.sql.DriverManager.getConnection(DriverManager.java:571)
位于java.sql.DriverManager.getConnection(DriverManager.java:215)
位于hive.hive_test.main(hive_test.java:22)

您可以在配置单元中设置容器堆并解决此错误:

大多数在Hadoop MapReduce框架上运行的工具都提供了为其作业调优这些Hadoop级别设置的方法。在Hive中有多种方法可以做到这一点。此处显示了其中三个:

1) 通过配置单元命令行直接传递:

hive -hiveconf mapreduce.map.memory.mb=4096 -hiveconf mapreduce.reduce.memory.mb=5120 -e "select count(*) from test_table;"
2) 在调用配置单元之前设置ENV变量:

export HIVE_OPTS="-hiveconf mapreduce.map.memory.mb=4096 -hiveconf mapreduce.reduce.memory.mb=5120"
3) 在配置单元CLI中使用“set”命令

hive> set mapreduce.map.memory.mb=4096;
hive> set mapreduce.reduce.memory.mb=5120;
hive> select count(*) from test_table;

在我的例子中,我还需要在
java.opts

set mapreduce.map.memory.mb=4096;
set mapreduce.map.java.opts=-Xmx3686m;
set mapreduce.reduce.memory.mb=4096;
set mapreduce.reduce.java.opts=-Xmx3686m;

对我来说,下面的解决方案很有效。

启动配置单元CLI之前,请使用
导出HADOOP\u CLIENT\u OPTS=“-Xmx8192m”
然后启动CLI

是否尝试使用更多内存?使用-Xmx?@Jayan否我不知道如何使用,因为我使用netbeanshow我可以在配置单元中设置容器堆化,我使用netbeans请帮助方法此设置无助于fot java GC开销限制错误,对吗?
set mapreduce.map.memory.mb=4096;
set mapreduce.map.java.opts=-Xmx3686m;
set mapreduce.reduce.memory.mb=4096;
set mapreduce.reduce.java.opts=-Xmx3686m;