python

jgzswidk  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(358)

我有一个15节点的集群,我计划用它来处理每天9000万行(配置单元表)/的数据。数据以配置单元表的形式存在于其中一个节点中,我使用的命令如下:,

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

这里的问题是,为了将所有数据加载到python中,查询运行了8个多小时。这是因为包获取所有数据并将其加载到这个特定节点的内存中。即使在加载之后,我也不能运行像count/eda这样的基本命令。每个命令都要花很多时间。这是因为15节点群集中这个特定节点的128gbram过载。
我还想利用其他节点的内存来读取/处理/执行数据的eda。有人能建议一种在python中使用这些节点的方法吗?这样,命令运行得更快,我就可以使用所有的节点了?我是分布式计算的初学者,我猜应该有一种方法可以利用所有的节点。另外,将所有数据读入python内存是否是一种好的做法?
谢谢你的帮助

flseospp

flseospp1#

分布式系统是一个庞大而复杂的主题,最好留给Maven来讨论。你用的是Python、Pandas和Hive。你应该换成spark,它有自己的功能 DataFrame 抽象类似于pandas,支持从配置单元表中读取数据,但将为您处理跨服务器的数据分发。你应该能够很容易地将你在pandas中所做的任何操作直接翻译成spark。

相关问题