2014-04-17 10 views
6

Ciao Sto affrontando un problema durante il tentativo di recuperare i dati da un cluster hadoop remoto utilizzando hiveserver2.Hiveserver2 non può recuperare il risultato di una query dalla connessione remota

La connessione JDBC sta lavorando, nel senso che le query di meta-dati, come show tables sta lavorando e anche le query che richiedono semplice elenco di dati, come select * from table è anche working.But quando una query, che provoca una mappa-reduce lavoro su hadoop, viene eseguito come select count(*) from table quindi genera un'eccezione di connessione. Posso vedere nei log di hive che la query viene eseguita senza errori.

Ho provato la stessa cosa con beeline e ha funzionato quando ho effettuato il collegamento utilizzando localhost ma quando mi sono connesso usando il nome del server, l'esecuzione è appena terminata.

Sono sicuro di avere alcune proprietà di configurazione che sta causando questo problema.

sto utilizzando Hadoop versione 2.0 e la versione 0.12.0 Hive

Solo per il gusto di chiarezza l'errore gettato sul lato client è la seguente

Exception in thread "main" java.sql.SQLException: org.apache.thrift.transport.TTransportException 
at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:203) 
at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:300) 
at com.nanobi.contentserver.Aatest.HiveJdbcClient.main(HiveJdbcClient.java:57) 

Come ho detto non v'è alcun errore sul server o hive.log e la query è stata eseguita correttamente. La migliore ipotesi è che venga generato un errore durante il recupero del risultato della query. Non riesci a trovare esattamente dove.

Per favore fatemi sapere se un ulteriore chiarimento è necessario per capire il problema

Grazie in anticipo

+0

Stai eseguendo la query tramite Beeline? Se no, cosa? Inoltre, quale versione di Thrift hai installato localmente? – Eli

+0

Ciao Eli, la query sta funzionando bene da beeline, mentre si utilizza "localhost" o IP del server nella connessione url.Ogni java client funziona quando viene eseguito dal server in cui è installato Hive. Il problema è solo mentre si effettua connessione remota e anche allora posso vedere sulla console Hiveserver2 che la query viene eseguita senza errori, nulla nei registri. – tyagi

+0

E 'solo che Hiveserver2 non è in grado di recuperare il risultato della query.Il problema è visto solo nel caso di query che causa il lavoro di ridimensionamento su hadoop come' select count (*) from table'.I dati di query semplici vengono recuperati dal server hive. The Thrift viene fornito con l'installazione Hive-0.12.0 quindi suppongo che anche Thrift sia della stessa versione. Per favore fatemi sapere se avete bisogno di altri dettagli.Cordiali saluti – tyagi

risposta

0

Inizio Hive Server2 prima ..

alveare --service hiveserver &

1

Dato che puoi recuperare i dati significa che la tua connessione funziona correttamente. Avviare nuovamente il server hive e controllare.

Se questo non funziona controlla le tue proprietà di configurazione hadoop.

Come hai detto, "Ho provato la stessa cosa con beeline e ha funzionato quando mi collegavo usando localhost ma quando mi collegavo usando il nome del server l'esecuzione era appena appesa.", Controlla se il nome dell'host viene riflesso o meno.

Dove si sta utilizzando la connessione JDBC per connettersi al server hive?