Использование переразбиения в запросах Spark SQL - PullRequest
0 голосов
/ 20 июня 2020

Я новичок в Spark- SQL. Я где-то читал об использовании REPARTITION() перед запросами Joins in Spark SQL для достижения лучшей производительности.

Однако я использую plain Spark SQL запросы ( not PySpark SQL), и я изо всех сил пытаюсь найти эквивалентный синтаксис использования из REPARTITION в таких простых запросах, как пример, показанный ниже.

/* how to use repartition() here ? */
select t1.id, t2.name
from table1 t1
inner join table2 t2
on t1.id = t2.id;

Кто-нибудь может рассказать об использовании и синтаксисе, которые будут использоваться в приведенном выше примере запроса? Кроме того, я хочу понять, в каком сценарии ios следует использовать перераспределение для повышения производительности соединения.

Спасибо.

1 Ответ

0 голосов
/ 20 июня 2020

Согласно spark-24940 Начиная с Spark-2.4 вы можете использовать repartition,coalesce подсказки в sql.


Example:

#sample dataframe has 12 partitions
spark.sql(" select * from tmp").rdd.getNumPartitions()
12

#after repartition has 5 partitions
spark.sql(" select /*+ REPARTITION(5) */ * from tmp").rdd.getNumPartitions()
5
...