2016-08-18 87 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。

相关问题