2015-04-16 10 views
5

benutzen ich hadoop hive 0.9.0 und 1.1.2 und NetBeans, aber ich diesen Fehler, und ich kann dieses Problem nicht lösen mir bitte Code helfen:java.lang.OutOfMemoryError: Java Heap-Speicher mit hive

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"); 
    } 
} 

Fehler unten;

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) 
+0

Haben Sie mit mehr Speicher versucht? mit -Xmx? – Jayan

+0

@Jayan nein Ich weiß nicht wie, weil ich netbeans arbeite – kawther

Antwort

13

Sie können den Container Heapsize in Hive gesetzt und lösen diesen Fehler:

Die meisten Tools, die auf der Oberseite des Hadoop MapReduce Framework arbeiten Möglichkeiten zur Optimierung bieten diese Hadoop Pegeleinstellungen für ihre Arbeitsplätze. Es gibt mehrere Möglichkeiten, dies in Hive zu tun. Drei davon sind hier zu sehen:

1) Direkt direkt über die Hive-Befehlszeile:

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

2) Stellen Sie die ENV Variable vor Hive Aufruf:

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

3) Verwenden Sie die "set" -Befehl innerhalb des Hive CLI.

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

Ich muss netbeans arbeiten, wie kann ich tun? – kawther

+0

Wie kann ich den Container Heapsize in Hive, ich benutze Netbeans bitte helfen Sie mir – kawther

Verwandte Themen