У меня есть некоторые данные в HDFS, мне нужно получить доступ к этим данным с помощью python, может ли кто-нибудь сказать мне, как доступ к данным из улья с помощью python?Доступ к данным Hive с использованием Python
ответ
Вы можете использовать улую библиотеку для улья доступа из питона, для который вы хотите импортировать улей класса из улья импорта ThriftHive
Ниже приведен пример
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)
Для установки вам потребуется эти библиотеки:
pip install sasl
pip install thrift
pip install thrift-sasl
pip install PyHive
Если вы работаете в Linux, вам может потребоваться установить SASL отдельно до запуска используя вышеизложенное. Установите пакет libsasl2-dev
с помощью apt-get
или yum
или любого другого менеджера пакетов. Для Windows есть некоторые опции on GNU.org. На Маке SASL должен быть доступен, если вы установили инструменты разработчика Xcode (xcode-select --install
)
После установки, вы можете выполнить улья запрос так:
from pyhive import hive
conn = hive.Connection(host="YOUR_HIVE_HOST", port=PORT, username="YOU")
Теперь, когда у вас есть улое соединение, вам есть варианты использования. Вы можете просто прямо вверх запрос:
cursor = conn.cursor()
cursor.execute("SELECT cool_stuff FROM hive_table")
for result in cursor.fetchall():
use_result(result)
... или использовать соединение, чтобы сделать панду dataframe:
import pandas as pd
df = pd.read_sql("SELECT cool_stuff FROM hive_table", conn)
«Не удалось запустить SASL:% s»% self.sasl.getError() »- под Windows 2008 R2, python 3.6 Как решить эту проблему? –
- 1. Доступ к данным Salesforce с использованием python
- 2. Доступ к данным JSON с использованием строки
- 3. Доступ к данным Hadoop с использованием службы REST
- 4. Доступ к данным в кусках с использованием Python Pandas
- 5. Доступ к музыкальным данным в формате MP3 с использованием Python
- 6. доступ к анализируемым данным html в python с использованием списков
- 7. Доступ к данным файла JSON с использованием запрограммированного запроса - Python
- 8. Доступ к данным о кулуарах с Java
- 9. доступ к данным GPS с использованием C#?
- 10. Доступ к данным Quickbook с использованием java
- 11. Доступ к данным JSON с использованием jquery
- 12. Доступ к данным NSJSONSerialization с использованием NSDictionary
- 13. Интеграция в Hive и HBase - проблема с доступом к данным
- 14. Доступ к данным из REST API в HIVE
- 15. Доступ к данным вариант
- 16. Доступ к данным указателя на объект python
- 17. Доступ к данным python из C (++)
- 18. Python Django - Доступ к данным иностранных ключей
- 19. Доступ к данным через BigQuery в python
- 20. Доступ к данным JSON в Python
- 21. Python доступ к данным в объекте JSON
- 22. Доступ к данным с laravel
- 23. доступ к данным с маршрутами
- 24. Доступ к данным NSManagedObject
- 25. Доступ к данным делегата
- 26. Доступ к данным Блокнот
- 27. Realm доступ к данным
- 28. Доступ к данным MVC
- 29. Доступ к данным CMDeviceMotion
- 30. Доступ к данным CrossPost
плз скажи мне, как получить улей библиотеки? –
вы можете получить эту библиотеку из $ HIVE_HOME/lib/py/* копировать содержимое внутри папки py и прошлое в библиотеку python – Sreejith
@Sreejith У меня нет проблем с импортом этих библиотек python, однако код зависает после выполнения команды hive. И это оказалось общей проблемой. Был ли ваш код подключен к Hiveserver1 или Hiveserver2? https://groups.google.com/a/cloudera.org/forum/#!topic/cdh-user/lCSuh6vLmHM –