У меня есть следующая проблема:
Я делаю sql-запрос к набору файлов паркета в HDFS, а затем собираю, чтобы получить результат.
Проблема в том, что когда строк много, я получаю сообщение об ошибке нехватки памяти.
Этот запрос требует перетасовки, поэтому я не могу выполнять запрос для каждого файла.
Одним из решений может быть повторение значений столбца и сохранение результата на диске:
df = sql('original query goes here')
// data = collect(df) <- out of memory
createOrReplaceTempView(df, 't')
for each c in cities
x = collect(sql("select * from t where city = c")
append x to file
Насколько я знаю, это приведет к тому, что программа займет слишком много времени, потому что запрос будет выполняться для каждого города.
Как лучше всего это сделать?