2013-05-10 114 views
2

我在運行在AWS EMR中的hadoop集羣上安裝了hive 0.8。通過Python客戶端的Hive查詢

我想做一些數據QA,它涉及到運行一個蜂巢式查詢,並將結果提取到python中,其中包含更多的邏輯。

目前,這是通過發送一個配置單元查詢作爲jobflow步驟,將這些結果轉儲到主節點上的本地存儲,SCP將這些結果送到本地機器,然後用python加載文件並解析結果。總而言之,不是一個非常有趣的過程。

理想情況下,我能做到這一點的類似的方式:

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

看來,這是假想可能。 Hive說它支持它here。還有另外一個SO question,看起來好像在做我想做的事情。

但是,我無法找到文檔。特別是,我還沒有弄清楚在哪些地方獲得這些例子中使用的包裝。如果有人能夠提供關於如何讓python客戶端工作的詳細指示信息,將會非常有幫助,但如果沒有這樣做,那麼知道在哪裏獲得這些包會有所幫助。

回答

0

如果你從源代碼編譯的模塊將在這裏位於蜂巢(相對於蜂房trunk目錄):

./build/dist/lib/py

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

另請注意,不再有名爲'hive'的模塊。在示例代碼中,您鏈接的「配置單元」應該替換爲「hive_service」。

1

看起來像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']) 

安裝時還應該安裝所需的節儉包。