Каков наилучший способ разложения искрового превращения? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть приложение spark, которое применило много преобразований ко многим файлам
сначала я создал одно преобразование (много кадров данных, которые выполняют это преобразование), одно действие (сохранение результата, около 1М строки), однако это версия не работает, она всегда выдает CG, или кучу исключений, поэтому я разлагаю ее на промежуточные действия и сохраняю каждый промежуточный результат. Сначала я подумала, что большое количество операций чтения / записи будет иметь проблемы с производительностью, однако это работает, поэтому мой вопрос:

Каков наилучший способ разложения искрового преобразования (я думаю, что операции чтения / записи не оптимальны)?

1 Ответ

1 голос
/ 24 апреля 2020

IO медленнее, чем простые вычисления, но чрезвычайно сложные вычисления могут быть медленнее, чем IO. Кэш ограничен и должен использоваться для сокращения времени вычислений.

Я бы кэшировал чрезвычайно сложные вычисления, чтобы они не были переоценены несколько раз. Если данные используются более чем в два раза, то это нарушает даже время ввода-вывода.

Если вычисления не так сложны, вам не нужно кэшировать и просто пересчитывать. Но посмотрите, сколько раз его повторное использование, если повторное использование является высоким, то кэш дает лучшую производительность.

Существуют различные варианты хранения (память, диск, и то и другое) для кэширования промежуточных данных, вы можете использовать их вместо явной записи на диск.

...