2015-04-16 16 views
5

ho usato Hadoop alveare 0.9.0 e 1.1.2 e NetBeans, ma ho ottenuto questo errore e non riesco a risolvere questo problema please help me codice:java.lang.OutOfMemoryError: Java spazio heap con alveare

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

Errore di seguito;

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

Hai provato con più memoria? con -Xmx? – Jayan

+0

@Jayan no Non so come, perché lavoro netbeans – kawther

risposta

13

È possibile impostare il heapsize contenitore Hive e risolvere l'errore:

maggior parte degli strumenti che operano sulla parte superiore del quadro Hadoop MapReduce fornire modi per regolare queste impostazioni del livello di Hadoop per i suoi lavori. Ci sono molti modi per farlo in Hive. Tre di questi sono mostrati qui:

1) passarlo direttamente tramite la riga di comando Hive:

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

2) Impostare la variabile ENV prima di richiamare Hive:

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

3) Utilizzare il comando "set" all'interno della CLI dell'alveare.

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

Devo lavorare netbeans, come posso fare? – kawther

+0

come posso impostare il contenitore heapsize in Hive, io uso netbeans per favore aiutami – kawther