Saltar al contenido

Acceda a los datos de Hive usando Python

Puede que se de el caso de que halles algún error con tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.

Solución:

Para instalar necesitarás estas bibliotecas:

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

Si está en Linux, es posible que deba instalar SASL por separado antes de ejecutar lo anterior. Instalar el paquete libsasl2-dev utilizando apt-get o yum o cualquier administrador de paquetes. Para Windows hay algunas opciones en GNU.org. En una Mac, SASL debería estar disponible si ha instalado las herramientas de desarrollo de xcode (xcode-select --install)

Después de la instalación, puede ejecutar una consulta de colmena como esta:

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

Ahora que tiene la conexión Hive, tiene opciones sobre cómo usarla. Puede realizar una consulta directa:

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

… o para usar la conexión para hacer un dataframe de Pandas:

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

Puede usar la biblioteca Hive para acceder a Hive desde python, para eso desea importar Hive Class desde Hive import ThriftHive

Debajo del ejemplo

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)

Al final de todo puedes encontrar las explicaciones de otros usuarios, tú todavía tienes el poder dejar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *