测量Apache Spark作业执行时间的基准

时间:2016-03-12 10:00:03

标签: apache-spark apache-spark-sql

我对Apache Spark很新。我已经使用了几个月,但这是我的第一个使用它的项目。

我使用Spark从数据中计算动态报告,存储在NoSQL数据库(Cassandra)中。到目前为止,我已创建了几个报告,并且它们已正确计算。在其中,我使用DataFrame .unionAll().join().count().map()等。

我在本地计算机上运行1.4.1 Spark群集,并进行以下设置:

export SPARK_WORKER_INSTANCES=6
export SPARK_WORKER_CORES=8
export SPARK_WORKER_MEMORY=1g

我还使用测试数据填充了数据库,每个表大约有10-12k条记录。

通过使用驱动程序的Web UI(http://localhost:4040/),我注意到这些作业需要40s-50s来执行,所以最近我一直在研究调整Apache Spark和作业的方法。

我已将Spark配置为使用KryoSerializer,我已将spark.io.compression.codec设置为lzf,我尽可能多地优化了作业,而且我的知识允许我到。

这导致了20到30秒的工作计算(我认为这是一个很好的改进)。问题是因为这是我的第一个Spark项目,我没有比较作业时间的基线,所以我不知道执行是慢还是快,以及代码或Spark配置是否有问题。 / p>

最好的方法是什么?是否有图表或基准来显示N数据的操作应该花多少时间?

1 个答案:

答案 0 :(得分:-1)

你必须使用配置单元。在蜂巢顶部,你可以放火花。执行此操作后,在Cassandra表的hive中创建临时表,您可以执行所有类型的聚合和过滤。执行此操作后,您可以使用hive jdbc连接来获取结果。它会给出快速的结果。