web-dev-qa-db-ja.com

java.lang.OutOfMemoryError:Javaハイブのあるヒープスペース

私はhadoop Hive 0.9.0および1.1.2とnetbeansを使用しましたが、このエラーが発生し、この問題を解決できません。コードを作成してください:

public class Hive_test {

private static String driverName = "org.Apache.hadoop.Hive.jdbc.HiveDriver";

   @SuppressWarnings("CallToThreadDumpStack")
public static void main(String[] args) throws SQLException {
    try {
        Class.forName(driverName);
    } catch (ClassNotFoundException e){
        e.printStackTrace();
        System.exit(1);
    }
            System.out.println("commencer la connexion");
    Connection con = DriverManager.getConnection("jdbc:Hive://localhost:10000/default",""," ");
    Statement stmt = con.createStatement();
    ResultSet res = stmt.executeQuery("select * from STATE");
    while (res.next()){
        System.out.println(String.valueOf(res.getInt(1)) + "\t" + res.getString(2));
                    System.out.println("sql terminer");
    }
}

以下のエラー。

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)
9
kawther

Hiveでコンテナーのヒープサイズを設定し、このエラーを解決できます。

Hadoop MapReduceフレームワーク上で動作するほとんどのツールは、ジョブのこれらのHadoopレベル設定を調整する方法を提供します。 Hiveでこれを行うには複数の方法があります。これらの3つをここに示します。

1)Hiveコマンドラインを介して直接渡します:

Hive -hiveconf mapreduce.map.memory.mb=4096 -hiveconf mapreduce.reduce.memory.mb=5120 -e "select count(*) from test_table;"

2)Hiveを呼び出す前にENV変数を設定します。

export Hive_OPTS="-hiveconf mapreduce.map.memory.mb=4096 -hiveconf mapreduce.reduce.memory.mb=5120"

3)Hive CLI内で「set」コマンドを使用します。

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

まあ、私の場合、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;
2
EasternXiang