Ho alcuni dati in HDFS, ho bisogno di accedere a quei dati usando python, qualcuno può dirmi come i dati sono accessibili da hive usando python?Accesso ai dati degli Hive usando Python
risposta
È 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)
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)
"Impossibile avviare SASL:% s"% self.sasl.getError() "- in Windows 2008 R2, python 3.6. Come risolvere questo problema? –
- 1. Accesso ai dati musicali MP3 usando Python
- 2. Accesso ai dati recuperati
- 3. Accesso ai dati POST da WSGI
- 4. Accesso ai dati del modello ng nel controller usando angularjs
- 5. Accesso ai dati già scaricati
- 6. accesso ai dati in DDD?
- 7. Accesso ai dati dei dati dei moduli
- 8. Accesso ai dati API di Facebook con Python
- 9. Python: accesso ai membri di un set
- 10. Accesso ai dati jQuery dall'elemento iframe
- 11. Accesso ai dati di contatto non elaborati
- 12. Python - accesso ai valori nidificati nei dizionari
- 13. accesso ai valori degli array senza parentesi quadre in php
- 14. LinqPad accesso ai componenti interni degli assembly firmati
- 15. Diversi modi di accesso ai valori degli attributi utilizzando javascript
- 16. Accesso ai dati all'indirizzo di memoria con tipi diversi
- 17. modelli django = business logic + accesso ai dati? O il livello di accesso ai dati dovrebbe essere separato dal modello django?
- 18. Accesso ai file di dati prima e dopo distutils/setuptools
- 19. Motivo di progettazione per il livello di accesso ai dati
- 20. Livello di accesso ai dati Statico o basato su istanze?
- 21. Come accedere ai dati netstat in Python?
- 22. Accesso ai campi associati ai membri statici
- 23. Ereditarietà degli attributi in python usando __init__
- 24. Repository generico con livello di accesso ai dati
- 25. angolare $ risorsa accesso ai meta dati dopo transformRespone
- 26. Accesso ai pixel lungo la curva/percorso usando opencv
- 27. Accesso ai video nella libreria usando AssestsLibrary framework iPhone?
- 28. Accesso ai metadati PNG
- 29. Accesso ai campi privati
- 30. Accesso ai file negato
plz dimmi come ottenere biblioteca alveare? –
è possibile ottenere quella libreria da $ HIVE_HOME/lib/py/* copiare quel contenuto all'interno della cartella py e passato nella libreria python – Sreejith
@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 –