ORDER BY vs SORT BY в Spark SQL - PullRequest
       28

ORDER BY vs SORT BY в Spark SQL

0 голосов
/ 06 августа 2020

Я использую Spark 2.4 и использую режим %sql для запросов к таблицам.

Если я использую оконную функцию для большого набора данных, то какая из ORDER BY или SORT BY будет быть более эффективным с точки зрения запроса производительности ?

Я понимаю, что ORDER BY обеспечивает глобальное упорядочение, но вычисление переносится только на редуктор 1. Однако SORT BY будет сортировать внутри каждого раздела, но разделы могут получать перекрывающиеся диапазоны.

Я хочу понять, можно ли использовать SORT BY в этом случае? И какой из них будет более эффективным при обработке большого набора данных (скажем, 100 M строк)?

Например,

ROW_NUMBER() OVER (PARTITION BY prsn_id ORDER BY purch_dt desc) AS RN

VS

ROW_NUMBER() OVER (PARTITION BY prsn_id SORT BY purch_dt desc) AS RN

Кто-нибудь может помочь. Спасибо.

Ответы [ 2 ]

0 голосов
/ 13 августа 2020

sort by применяется к каждому сегменту и не гарантирует сортировку всего набора данных. Но order by применяется ко всему набору данных (в одном редукторе). Поскольку ваш запрос разделен и отсортирован / упорядочен для каждого ключа раздела, оба использования возвращают один и тот же результат.

0 голосов
/ 06 августа 2020
  • Неважно, используете ли вы SORT BY или ORDER BY. Существует понятие о Hive, которое вы, вероятно, имеете в виду, но вы используете Spark, у которого нет такой проблемы.

  • Для partition BY ... проблема, если вам нечем разделить. У вас есть prsn_id , поэтому не проблема.

...