如何提高spark中的查询性能?

Saj*_*a S 1 scala apache-spark apache-spark-sql

我有一个连接 4 个表的查询,我使用查询下推将其读入数据帧。

val df = spark.read.format("jdbc").
 option("url", "jdbc:mysql://ip/dbname").
 option("driver", "com.mysql.jdbc.Driver").
 option("user", "username").
 option("password", "password")
 .option("dbtable",s"($query) as temptable")
 .load()
Run Code Online (Sandbox Code Playgroud)

单个表中的记录数分别为 430、350、64、2354,加载需要 12.784 秒,创建 SparkSession 需要 2.119 秒

然后我将结果数据计算为,

 val count=df.count()
 println(s"count $count")
Run Code Online (Sandbox Code Playgroud)

那么总执行时间为 25.806 秒,结果仅包含 430 条记录。

当我在 sql workbench 中尝试相同的操作时,只需几秒钟即可完全执行。我也在 load() 之后尝试缓存,但它需要相同的时间。那么我怎样才能比我所做的更快地执行它。

Arn*_*-Oz 5

您正在使用一种用于处理大数据的工具来解决玩具示例,因此您获得了所有开销而没有任何好处