Конфигурация Spark Cluster - PullRequest
       3

Конфигурация Spark Cluster

0 голосов
/ 02 января 2019

Я использую кластер искр с двумя узлами, каждый из которых имеет двух исполнителей (каждый использует 2 ядра и 6 ГБ памяти).

Это хорошая конфигурация кластера для более быстрого выполнения моих заданий на спарк?

Я новичок в работе и выполняю задание на 80 миллионах строк данных, которое включает в себя перетасовку тяжелых задач, таких как агрегирование (подсчет) и операции объединения (самосоединение на фрейме данных).

Узкие:

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

Каким должен быть мой подход и как я могу устранить свои узкие места?
Любое предложение было бы весьма заметно.

query = "(выберите x, y, z из таблицы) как df"

    jdbcDF = spark.read.format("jdbc").option("url", mysqlUrl) \
    .option("dbtable", query) \
    .option("user", mysqldetails[2]) \
    .option("password", mysqldetails[3]) \ 
    .option("numPartitions", "1000")\
    .load()

Это дает мне фрейм данных, который в jdbcDF.rdd.getNumPartitions () дает мне значение 1. Я что-то здесь упускаю? Я думаю, что я не распараллеливаю свой набор данных.

1 Ответ

0 голосов
/ 02 января 2019

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

  1. Попробуйте уменьшить количество записей и столбцов для обработки. Как вы уже упоминали, вы новичок в зажигании, и вам может не понадобиться все 80 миллионов строк, поэтому вы можете отфильтровать строки в соответствии с вашими потребностями. Кроме того, выберите столбцы, которые необходимы, но не все.

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

  3. Если вы объединяете два DataFrames и один из них достаточно мал, чтобы поместиться в памяти, тогда вы можете рассмотреть широковещательное соединение .

  4. Увеличение ресурсов может не улучшить производительность вашего приложения во всех случаях, но, глядя на вашу конфигурацию кластера, это должно помочь. Возможно, было бы неплохо добавить больше ресурсов и проверить производительность.

  5. Вы также можете попробовать использовать Spark UI для мониторинга вашего приложения и посмотреть, есть ли несколько задач, которые занимают больше времени, чем другие. Тогда, вероятно, вам нужно иметь дело с асимметрией ваших данных.

  6. Вы можете попробовать разделить данные на основе столбцов, которые вы используете в критериях фильтрации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...