Можем ли мы предсказать порядок результатов запроса Hive SELECT *? - PullRequest
0 голосов
/ 29 ноября 2018

Возможно ли, что порядок результатов SELECT * query (no ORDER BY) всегда одинаков при условии, что в качестве Metastore используется та же СУБД?

Итак, если MySQL используется как Metastore, порядокрезультатов для запроса SELECT *; всегда будут одинаковыми.Если используется Postgres, порядок всегда будет одинаковым для одних и тех же данных, но отличается от того, когда используется MySQL.Я говорю об одних и тех же данных.

Возможно, все сводится к вопросу о том, каков порядок результатов по умолчанию и почему он отличается для MySQL и Postgres Metastore.

1 Ответ

0 голосов
/ 29 ноября 2018

Порядка строк по умолчанию не существует, без ORDER BY порядок не гарантируется.Этот факт не связан с используемой базой данных Metastore.

Обычно данные считываются параллельно многими процессами (мапперами), после вычисления разбиений каждый процесс начинает чтение некоторого фрагмента файла или нескольких файлов, в зависимости отРасчеты рассчитаны.Все параллельные процессы могут обрабатывать разные объемы данных и работать на разных узлах, нагрузка не всегда одинакова, поэтому они начинают возвращать строки и заканчивать в разное время, в зависимости от слишком многих факторов, таких как нагрузка на узел, нагрузка на сеть, объемданных на процесс и т. д. и т. д. Удалив все эти факторы, вы можете повысить точность прогнозирования заказа.Скажем, последовательное чтение из одного потока вернет строки в том же порядке, в каком они находятся в файле.Но это не то, как работает база данных.

Кроме того, согласно реляционной теории Кодда, порядок столбцов и строк не имеет значения для базы данных.

...