web-dev-qa-db-ja.com

Python)を使用してHiveデータにアクセスする

HDFSにいくつかのデータがあります。Pythonを使用してそのデータにアクセスする必要があります。Pythonを使用してHiveからデータにアクセスする方法を教えてもらえますか?

12
subina mohanan

Hiveライブラリを使用してPythonからHiveにアクセスできます。そのため、HiveからHiveクラスをインポートします。importThriftHive

例の下

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)
6
Sreejith

インストールするには、次のライブラリが必要です。

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

Linuxを使用している場合は、上記を実行する前にSASLを個別にインストールする必要がある場合があります。パッケージをインストールしますlibsasl2-dev using apt-getまたはyumまたは任意のパッケージマネージャー。 Windowsの場合、いくつかのオプションがあります GNU.org上 。 Macでは、xcode開発者ツールをインストールしている場合はSASLを使用できます(xcode-select --install

インストール後、次のようにHiveクエリを実行できます。

from pyhive import Hive
conn = Hive.Connection(Host="YOUR_Hive_Host", port=PORT, username="YOU")

これでHive接続ができたので、使用方法を選択できます。単純なクエリを実行できます。

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

...または接続を使用してPandasデータフレーム:

import pandas as pd
df = pd.read_sql("SELECT cool_stuff FROM Hive_table", conn)
12
Tristan Reid

Windowsを使用している場合のはるかに簡単なソリューションは、pyodbcを使用します。

  import pyodbc
  import pandas as pd

  # connect odbc to data source name
  conn = pyodbc.connect("DSN=<your_dsn>", autocommit=True)

  # read data into dataframe
  Hive_df = pd.read_sql("SELECT * FROM <table_name>", conn)

ODBCドライバーとDSNがあれば、必要なのはそれだけです。

0
Jared Wilber