У меня есть запрос, который объединяет 4 таблицы, и я использовал запрос pushdown, чтобы прочитать его в массив данных.
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 сек и 2.119 сек для создания SparkSession
, затем я считаю результирующие данные как
val count=df.count()
println(s"count $count")
, затем общее время выполнения 25.806 сек и результат содержит только 430 записей.
Когда я пытаюсь сделать то же самое в sql workbench, выполнение занимает всего несколько секунд.Также я попытался кеш после загрузки (), но это занимает то же время.Так как я могу выполнить это намного быстрее, чем то, что я сделал.