Разрушение родословной СДР без использования HDFS - PullRequest
0 голосов
/ 28 марта 2019

Я запускаю искровое приложение на экземплярах Amazon Spot. В конце я экспортирую свои результаты в файлы паркета на S3. Задачи занимают много памяти, поэтому я должен выполнить начальные вычисления, используя большое количество разделов (сотни тысяч). В конце я хотел бы объединить разделы в несколько больших разделов и сохранить их в большие файлы паркета. И вот тут я попадаю в беду:
- Если я использую .coalesce(), что является узким преобразованием, вся линия, предшествующая объединению, будет выполнена на небольшом количестве разделов, что приведет к OOM.
- Если я использую .repartition(), я полагаюсь на HDFS для случайных файлов. Это проблема при использовании точечных экземпляров, которые могут быть выведены из эксплуатации, оставляя поврежденные / отсутствующие блоки HDFS.
- контрольная точка также зависит от HDFS, поэтому я не могу ее использовать.
- преобразование в Dataframe и обратно фактически не нарушало родословную (rdd.toDF.rdd, я что-то упустил?).

В заключение я ищу способ объединиться с меньшим количеством разделов только для сохранения данных на S3 - я бы хотел, чтобы расчеты производились с использованием исходных разделов.

...