Spark + запись в таблицу Hive + обходной путь - PullRequest
0 голосов
/ 23 апреля 2020

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

Spark во время записи данных в таблицу Hive (InsertInto) выполняет следующие действия:

  1. Запись в промежуточную папку
  2. Перемещение данных в таблицу кустов с помощью фиксатора вывода.

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

    1) Write files directly to HDFS

    2) Refresh metastore for Hive

И я вижу людей, сообщающих о значительном улучшении этого подхода.

Но почему-то я еще не уверен, что это безопасный и правильный метод. Разве это не компромисс для Automiticy? (Либо полная запись таблицы, либо отсутствие записи)

Что если произойдет сбой исполнителя, записывающего файл в HDFS? Я не вижу способа полностью вернуть наполовину законченные записи.

Я также думаю, что Spark сделал бы это, если бы это был правильный способ, не так ли?

Мои вопросы верны? Видите ли вы что-то хорошее в вышеуказанном подходе? Прокомментируйте, пожалуйста.

1 Ответ

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

Это не на 100% правильная причина, поскольку в hive v3 вы могли получить доступ к данным улья только с помощью драйвера улья, чтобы не сломать новую машину для транзакций.

Даже если вы используете hive2, вы должны хотя бы помнить что вы не сможете получить доступ к данным напрямую после обновления.

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