簡體   English   中英

通過Python客戶端進行Hive查詢

[英]Hive queries via Python client

我在AWS EMR中運行的hadoop集群上安裝了hive 0.8。

我正在嘗試進行一些數據質量檢查,其中涉及運行配置單元查詢並將結果提取到包含更多邏輯的python中。

當前,這是通過發送一個配置單元查詢作為作業流程步驟,將這些結果轉儲到主節點上的本地存儲,將這些結果SCP放入我的本地計算機,然后使用python加載文件並解析結果來實現的。 總而言之,這不是一個非常有趣的過程。

理想情況下,我將能夠以類似以下方式進行操作:

conn = hive.connect(ip, port, user, pw)
cursor = conn.cursor()
cursor.execute(query)
rs = cursor.fetchall()

看來這是可能的。 Hive說它在這里支持它。 還有另一個SO問題看起來像是在做我想做的事情。

但是,我在查找文檔時遇到了麻煩。 特別是,我無法弄清楚在這些示例中使用的軟件包。 如果有人能夠提供有關如何使python客戶端正常工作的詳細說明,那將非常有幫助,但如果失敗,僅知道從何處獲取這些軟件包將很有幫助。

看起來hive_utils包具有您想要的東西。 查看pypi頁面,您可以通過以下方式運行查詢:

query = """
    SELECT country, count(1) AS cnt
    FROM User
    GROUP BY country
"""
hive_client = hive_utils.HiveClient(
    server=config['HOST'],
    port=config['PORT'],
    db=config['NAME'],
)
for row in hive_client.execute(query):
    print '%s: %s' % (row['country'], row['cnt'])

安裝該軟件包還應安裝所需的舊版軟件包。

如果從源代碼構建Hive,則模塊將位於此處(相對於hive-trunk目錄):

./build/dist/lib/py

如果在PYTHONPATH環境變量中包含該路徑,或者使用sys模塊將該路徑添加到腳本中的python路徑,則應該能夠訪問這些模塊。

另請注意,不再有名為“ hive”的模塊。 在示例代碼中,您鏈接的“ hive”應替換為“ hive_service”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM