Запрос на пряжу и искру - PullRequest
       12

Запрос на пряжу и искру

0 голосов
/ 20 ноября 2018

Мне нужно использовать spark для экспорта данных из Hive (с разделами) в Teradata (без разделов).

Спецификация кластера: 120 рабочих узлов, каждый из которых имеет 16 ядерных процессоров, 128 ГБ ОЗУ.Размер таблицы составляет около 130 ГБ, и когда я создаю из нее фрейм данных, она создает 1,30000 разделов.

val df=spark.sql("select * from <hive-external-table>")

df.mode(SaveMode.Append).write.jdbc(<jdbc_url>,<teradata_table>,<connectionproperties>)

Я запускаю искру в режиме клиента, используя следующую конфигурацию:

--executor-cores 5 --executor-memory 16G --num-executors 200

Задание работало гладко, но оно создало более 300 соединений JDBC на конце Teradata, администраторы баз данных запаниковали и убилииз-за них моя работа провалилась.

Теперь мои вопросы:

  1. Должен ли я использовать объединение, чтобы уменьшить количество разделов с 1,30,000?Если да, что является оптимальным и как его выбрать?

  2. Как я уже говорил, работа выполнялась довольно быстро, она использовала около 900 голосов из 1500, которые я запросил: Этап 0> -> -------------------------- (40230 + 932) / 1,30,000

  3. Как я могу настроить это так, чтобы моя работа не создавала, скажем, более 100 соединений JDBC?

  4. Помогло бы, если целевая таблица на конце Teradata разбита на один столбец?Как?

    Было получено столько vcores из Yarn, когда они простаивали, но когда были представлены другие производственные задания, они работали очень медленно, так как не получали необходимое количество исполнителей.

  5. Самый важный вопрос: не должен ли Yarn освободить исполнителей, которых он первоначально предоставил моей работе, и распределить их на другие рабочие места?Я выполнял свою работу в очереди по умолчанию, которая не имеет особого приоритета.

  6. Разве я не должен использовать spark и использовать вместо нее Sqoop?

Пожалуйста, дайте мне знать, если вам нужна какая-либо другая информация о системе, и извините, если у меня нет ясности с моей проблемой, поскольку я не настолько опытен в искре.

1 Ответ

0 голосов
/ 21 ноября 2018

Я попытаюсь ответить на некоторые из приведенных выше вопросов:

  1. Не существует общего руководства в отношении функции объединения, которому можно следовать.Вы должны увидеть, какой из них лучше работает для вас, в отношении количества vcores и выполнения задач.

  2. Функция динамического распределения YARN гарантирует, что исполнители возвращаются после первоначального выделения, а исполнители не используются во время выполнения.Это помогает высвободить ресурсы в кластере, а также гарантирует, что мы не будем жестко привязывать ресурсы кластера только к одной работе.

  3. Spark и Sqoop - это две разные вещи.Spark используется для обработки в памяти / параллельной обработки данных (из одного или нескольких источников данных / распределенных систем).Sqoop берет данные из одного источника и загружает в другой.Сравнение этих двух не очень хорошая идея.

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