Spark性能调优

  1. 尽可能的过滤原始数据
    在上次实践中,我们使用
spark.read.jdbc(mysqlHelper.DB_URL_R,"t_rfid_card",
    Array("org_id="+ORG_ID),
    mysqlHelper.PROPERTIES)

过滤并读取了数据库。如果我们要多加几个过滤条件,要小心一个陷阱,Array[String]参数并不是用来叠加过滤条件的, 在文档中说明了这一点:

Spark性能调优_第1张图片

所以如果是要叠加过滤条件,只能在一个字符串内拼接,像这样:

spark.read.jdbc(mysqlHelper.DB_URL_R, "t_medical_waste",
    Array("org_id = " + ORG_ID+" AND YEAR(rec_ts) = "+YEAR), 
    mysqlHelper.PROPERTIES)
  1. spark.default.parallelism设置
    这里有一篇很好的优化指南。在standalone模式下,情况要简单一些,这个值相当于每个核分配2~3个线程的所有线程总和。修改在conf/spark-defaults.conf中。

你可能感兴趣的:(Spark性能调优)