【发布时间】:2018-11-01 06:18:53
【问题描述】:
我在对我的 pyspark 代码进行性能基准测试时遇到了一个特殊问题。
我正在从 kafkadstream 获取数据,然后将 rdd 转换为数据帧,然后经过一些转换,我通过 pheonix 将 spark 数据帧保存在 HBase 中。
以下是统计数据。
对于开发集群
[开发集群][没有任何包导入的纯代码]:
记录数:10
DF 创建时间:0.185553 秒
DF 插入时间:0.511172 秒
[开发集群][使用包导入中的通用代码]:
注意:包由“--py-files package.zip”发送
记录数:10
DF 创建时间:2.896647 秒
DF 插入时间:3.456992 秒
[开发集群][使用包导入中的通用代码]:
注意:包安装在每个节点上
记录数:10
DF 创建时间:0.680334 秒
DF 插入时间:0.831929 秒
现在用于生产集群:
[生产集群][没有任何包导入的纯代码] :
记录数:10
DF 创建时间:0.184458 秒
DF 插入时间:0.736582 秒
[生产集群][使用包导入中的通用代码]:
注意:包由“--py-files package.zip”发送
记录数:10
DF 创建时间:1.925941 秒
DF 插入时间:2.203001 秒
[生产集群][使用包导入中的通用代码]:
注意:包安装在每个节点上
记录数:10
DF 创建时间:1.966830 秒
DF 插入时间:2.408202 秒
所以在开发集群中,当我在每个节点上安装我的代码并设置 PYTHONPATH 时,它提高了性能,并且从包导入的代码的性能几乎等于没有导入的纯 python 代码。但是在生产中这根本没有帮助。
对于上述所有场景,我都使用了 --executor-memory 1g --num-executors 1 --executor-cores=1
如果有人指出我正确的方向,我将非常感激。
【问题讨论】:
标签: performance apache-spark pyspark apache-spark-sql