2016-08-18 88 views
0

我有一個15節點羣集,我計劃用它來處理9000萬行(Hive表)/每天範圍內的數據。該數據是存在於節點作爲一個蜂房表的一個,我使用類似下面的命令,如何使用羣集中的多個節點來處理大量數據 - python

with hive.connect(host = 'hostname of that node', port= 10000, authMechanism='LDAP', user='username', password='pass') as conn: 
    with conn.cursor() as cur: 
     cur.execute('select * from tablename') 
     do_not_touch_this_data = pd.DataFrame(cur.fetch()) 

這裏的問題是查詢運行時間超過8小時,加載所有的數據到蟒蛇。這是因爲程序包會獲取所有數據並將其加載到此特定節點的內存中。即使加載後,我也無法運行count/EDA等基本命令。每個命令花費很多時間。這是因爲15節點羣集中的此特定節點的128 GB RAM會過載。

我想利用其他節點的內存以及讀取/處理/執行數據的EDA。任何人都可以提出一種在python中使用這些節點的方法,這樣,命令運行得更快,我可以使用所有節點?我是分佈式計算的初學者,我猜應該有一種方法來利用所有的節點。另外,是否將所有數據讀入python內存是一種好的做法?

感謝您的幫助

回答

1

分佈式系統是一個龐大而複雜的主題,是最好留給專家。你正在使用Pyhon,Pandas和Hive。您應該切換到Spark,它具有與熊貓類似的DataFrame抽象,並支持從Hive表讀取數據,但將處理您的服務器之間的數據分佈。您應該能夠輕鬆地將您在Pandas中執行的任何操作直接轉換爲Spark。

相關問題