Как улучшить производительность запросов в спарк? - PullRequest
0 голосов
/ 02 января 2019

У меня есть запрос, который объединяет 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, выполнение занимает всего несколько секунд.Также я попытался кеш после загрузки (), но это занимает то же время.Так как я могу выполнить это намного быстрее, чем то, что я сделал.

1 Ответ

0 голосов
/ 02 января 2019

Вы используете инструмент, предназначенный для обработки больших данных, для решения игрушечных примеров, и, таким образом, вы получаете все накладные расходы и не получаете никаких преимуществ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...