2013-07-18 17 views

risposta

6

È possibile utilizzare libreria alveare per l'accesso alveare in pitone, per cui si desidera importare Classe alveare da importazione alveare ThriftHive

Di seguito l'esempio

import sys 

from hive import ThriftHive 
from hive.ttypes import HiveServerException 

from thrift import Thrift 
from thrift.transport import TSocket 
from thrift.transport import TTransport 
from thrift.protocol import TBinaryProtocol 

try: 
    transport = TSocket.TSocket('localhost', 10000) 
    transport = TTransport.TBufferedTransport(transport) 
    protocol = TBinaryProtocol.TBinaryProtocol(transport) 
    client = ThriftHive.Client(protocol) 
    transport.open() 
    client.execute("CREATE TABLE r(a STRING, b INT, c DOUBLE)") 
    client.execute("LOAD TABLE LOCAL INPATH '/path' INTO TABLE r") 
    client.execute("SELECT * FROM r") 
    while (1): 
    row = client.fetchOne() 
    if (row == None): 
     break 
    print row 

    client.execute("SELECT * FROM r") 
    print client.fetchAll() 
    transport.close() 
except Thrift.TException, tx: 
    print '%s' % (tx.message) 
+0

plz dimmi come ottenere biblioteca alveare? –

+0

è possibile ottenere quella libreria da $ HIVE_HOME/lib/py/* copiare quel contenuto all'interno della cartella py e passato nella libreria python – Sreejith

+0

@Sreejith Non ho problemi a importare quelle librerie python, tuttavia, il codice si blocca dopo l'esecuzione del comando hive. E si è rivelato un problema generale. Il tuo codice è stato collegato a Hiveserver1 o Hiveserver2? https://groups.google.com/a/cloudera.org/forum/#!topic/cdh-user/lCSuh6vLmHM –

9

Per installare è necessario queste librerie:

pip install sasl 
pip install thrift 
pip install thrift-sasl 
pip install PyHive 

Se siete su Linux, potrebbe essere necessario installare SASL separatamente prima runn quanto sopra. Installare il pacchetto libsasl2-dev utilizzando apt-get o yum o qualsiasi altro gestore di pacchetti. Per Windows ci sono alcune opzioni on GNU.org. Su un Mac SASL dovrebbe essere disponibile se avete installato Xcode Tools di sviluppo (xcode-select --install)

Dopo l'installazione, è possibile eseguire una query alveare come questo:

from pyhive import hive 
conn = hive.Connection(host="YOUR_HIVE_HOST", port=PORT, username="YOU") 

Ora che avete la connessione alveare, è avere opzioni su come usarlo Si può solo straight-up query:

cursor = conn.cursor() 
cursor.execute("SELECT cool_stuff FROM hive_table") 
for result in cursor.fetchall(): 
    use_result(result) 

... o utilizzare la connessione per fare un dataframe Pandas:

import pandas as pd 
df = pd.read_sql("SELECT cool_stuff FROM hive_table", conn) 
+1

"Impossibile avviare SASL:% s"% self.sasl.getError() "- in Windows 2008 R2, python 3.6. Come risolvere questo problema? –

Problemi correlati