我正在尝试连接两个 Spark RDD。我有一个链接到类别的事务日志。我已将交易 RDD 格式化为以类别 id 作为键。
transactions_cat.take(3)
[(u'707', [u'86246', u'205', u'7', u'707', u'1078778070', u'12564', u'2012-03-02 00:00:00', u'12', u'OZ', u'1', u'7.59']),
(u'6319', [u'86246', u'205', u'63', u'6319', u'107654575', u'17876', u'2012-03-02 00:00:00', u'64', u'OZ', u'1', u'1.59']),
(u'9753', [u'86246', u'205', u'97', u'9753', u'1022027929', u'0', u'2012-03-02 00:00:00', u'1', u'CT', u'1', u'5.99'])]
categories.take(3)
[(u'2202', 0), (u'3203', 0), (u'1726', 0)]
事务日志约为 20 GB(3.5 亿行)。
类别列表小于1KB。
当我跑步时
transactions_cat.join(categories).count()
Spark 开始变得非常慢。我有一个有 643 个任务的阶段。前 10 个任务大约需要 1 分钟。然后每个任务的速度越来越慢(第 60 个任务大约需要 15 分钟)。我不确定出了什么问题。
Please check theses screenshots to get a better idea.
我正在使用 python shell 运行 Spark 1.1.0,有 4 个工作线程,总内存为 50 GB。
仅统计 RDD 的交易相当快(30 分钟)