Nano Hash - криптовалюты, майнинг, программирование

Настройка производительности на основе количества файлов деталей, созданных в Spark

Вот этапы моей работы:

  1. Фаза 1. Выполните некоторые вычисления и сохраните временные данные в файле. В потоке будет сохранено и прочитано несколько временных фреймов данных.
  2. Фаза 2. Прочитайте временные данные, выполните другие вычисления и сохраните их в окончательный файл данных.

ПРИМЕЧАНИЕ. Я сохраняю несколько временных файлов, так как не могу хранить их в памяти, так как данные огромны (84 миллиона строк, 2 миллиона различных значений первичного ключа).

Я использую coleasce(n) или repartition(n) , где n — большое число, например: 200. Теперь это приводит к созданию 200 файлов на выходе для каждого из временных данных, которые я сохраняю. Я знаю, что coleasce/repartition — это дорогостоящая работа для производительности записи. Но я получаю лучший параллелизм, когда использую n=200, чем когда n=50. Это все, что касается написания.

Теперь эти временные данные будут считываться следующими процессами. Итак, будет ли лучше n = 200 или n = 50?

Кроме того, я знаю, что номер родительского раздела (n) будет базой для следующей операции записи и так далее.

Qs:

  1. Когда использовать coleasce (без перемешивания) и когда использовать перераспределение (перетасовку)?
  2. Значение раздела, которое будет использоваться и почему?
  3. Какую стратегию я должен использовать для повышения производительности?

Ответы:


1

1) Используйте объединение, когда размер выходных файлов вряд ли будет искажен (1 файл 2 ГБ, остальные 0 ГБ). Перераспределение наиболее полезно, когда вы хотите сбалансировать работу между исполнителями, чтобы все разделы были одинакового размера.

2) установите выходные разделы на основе заданного значения для времени записи и чтения. Например, иметь большое количество разделов (файлы меньшего размера) для однократной записи и чтения (промежуточный вывод), но установить разделы меньшего размера (файлы большего размера) при однократной записи и многократном чтении (WORM для использования паркета в качестве аналитики). Чем больше разделов, тем больше одновременных задач можно выполнить одновременно.

3) попробуйте разные подходы, если сможете, и измерьте время письма и чтения; определите компромиссы, которые лучше всего подходят для вашего варианта использования.

Это очень похоже на алгоритмы сжатия, где одни могут быстро сжимать (например, LZO), другие сохраняют с минимальными затратами (например, BZip2), а третьи быстро распаковывают (например, Snappy).

30.09.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..