В последнее время я много работал над стандартом Bigquery sql, и в то же время в спарк обращаются с точно такими же данными.
Я заметил кое-что странное с точки зрения выполнения запросов в bigquery.
Например: если я запускаю стандартный SQL-запрос с аналитическими функциями окна, такими как row_number () или rank () в таблице больших запросов, которая содержит около 500ГБ данных и около 60 миллионов строк дают ошибку «Недостаточно памяти» .И я прочитал, поскольку оконные функции требуют сортировки (разделение по порядку имен столбцов по именам столбцов) , механизм больших запросов объединяет весь кусок данных в один узел для целей сортировки, что понятно и, следовательно, является ошибкой.
Но когда я считываю данные в spark и запускаю точно такой же запрос в spark sql после регистрации набора данных как временного, я получаю вывод в считанные минуты.Я также замечаю, что разделы и число исполнителей активны в интерфейсе spark, что в основном означает, что данные в разделе spark должным образом распределяются.
Может ли кто-нибудь пролить свет на то, почему и как эти 2 отличаются и чем.