2013-07-18 15 views

Antwort

6

Sie können mit Bienenstock-Bibliothek für den Zugriff Struktur von Python, für die Sie hive Klasse von hive Import importieren möchten ThriftHive

Unter dem Beispiel

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 mir sagen, wie Bienenstock Bibliothek zu bekommen? –

+0

Sie können diese Bibliothek von $ HIVE_HOME/lib/py/* kopieren Sie diesen Inhalt in den PY-Ordner und Vergangenheit in Python-Bibliothek – Sreejith

+0

@Sreejith Ich habe kein Problem beim Importieren dieser Python-Bibliotheken, aber der Code hängt nach dem Ausführen von Hive-Befehl. Und es stellte sich heraus, dass es ein allgemeines Problem war. Hat sich Ihr Code mit Hiveserver1 oder Hiveserver2 verbunden? https://groups.google.com/a/cloudera.org/forum/#!topic/cdh-user/lCSuh6vLmHM –

9

Sie benötigen zur Installation werden Diese Bibliotheken:

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

Wenn Sie unter Linux sind, müssen Sie möglicherweise SASL vor dem Ausführen separat installieren das oben genannte. Installieren Sie das Paket libsasl2-dev mit apt-get oder yum oder was auch immer Paketmanager. Für Windows gibt es einige Optionen on GNU.org.

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

Jetzt, wo Sie den Bienenstock-Verbindung haben, können Sie: Auf einem Mac SASL zur Verfügung stehen sollten, wenn Sie Xcode Entwickler-Tools (xcode-select --install)

Nach der Installation installiert haben, können Sie einen Bienenstock Abfrage wie folgt ausführen habe Optionen wie man es benutzt. Sie können nur straight-up-Abfrage:

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

... oder die Verbindung zu verwenden, um eine Pandas Datenrahmen zu machen:

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

"SASL konnte nicht gestartet werden:% s"% self.sasl.getError() "- unter Windows 2008 R2, Python 3.6 Wie löst man dieses Problem? –

Verwandte Themen