scala - 如何提高 Spark 中的查询性能?
问题描述
我有一个连接 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()
单个表中的记录数分别为 430、350、64、2354,加载需要 12.784 秒,创建 SparkSession 需要 2.119 秒
然后我将结果数据计算为,
val count=df.count()
println(s"count $count")
那么总执行时间为 25.806 秒,结果仅包含 430 条记录。
当我在 sql workbench 中尝试相同的操作时,只需几秒钟即可完全执行。我也在 load() 之后尝试了缓存,但它需要相同的时间。那么我怎样才能比我做的更快地执行它。
解决方案
您正在使用一个旨在处理大数据的工具来解决玩具示例,因此您获得了所有的开销而没有任何好处
推荐阅读
- python - pandas.read_csv() 返回 ParserError
- reactjs - React 不加载本地 svg
- android - Url Launcher 不适用于 MissingPluginException Flutter
- angular - 访问 FormGroup 的 FormArray 的数据
- python - 用逗号分割字符串,'and's,'or's
- sql - 红移上镶木地板文件的 content_length
- r - 在 R 中固定日期
- mongodb - 使用带有 go-mongodb 驱动程序的 $gt 过滤器搜索文档
- multithreading - 主线程在基于线程池/任务的应用程序中做什么?
- asp.net-web-api - 在 Postman 中传递空字符串