Я использую Hive с Spark 1.6.3
У меня большой набор данных (40000 строк, 20 столбцов или около того, и каждый столбец содержит, возможно, 500 байт - 3 КБ данных)
запрос представляет собой соединение с 3 наборами данных
Я хочу, чтобы я мог отобразить окончательный набор данных объединения, и я обнаружил, что могу использовать row_number() OVER (ORDER BY 1)
для генерации уникального номера строки для каждой строки в наборе данных.
После этого я могу сделать
SELECT * FROM dataset WHERE row between 1 AND 100
Однако есть ресурсы, которые советуют не использовать ORDER BY
, поскольку он помещает все данные в 1 раздел (я вижу, что это такжурналы, в которых при распределении в случайном порядке данные перемещаются в один раздел), когда это происходит, я получаю исключения из памяти.
Как мне более эффективно выполнять разбиение по страницам набора данных?
Я включил постоянство - MEMORY_AND_DISK
, чтобы, если раздел слишком большой, он попадал на диск (и для некоторых преобразований я вижу, что, по крайней мере, некоторые данные выливаются на диск, когда я не использую *)1019 *)