Можно ли удалить раздел Hive, пока задание sparkSql записывает новые разделы в одну таблицу? - PullRequest
0 голосов
/ 30 октября 2019

У меня есть внешний разделенный (by: source, execute_id, entity_name) Hive table, называемый business_views.

Я хотел бы знать, есть ли проблемы с одновременным запуском этих двух действий:

  • ALTER TABLE business_views DROP IF EXISTS PARTITION (entity_name = 'XXXX')

  • Запустите программу Spark Spark, которая пишет внутри многораздельной таблицы business_views:
    DbUtils.scala:

    spark.catalog.refreshTable(s"$DATABASE_NAME.$tableName")
    df
    .select(XXXXXXXXXXXXXXXXXXXXXXXXXXX)
    .repartition($"source", $"execution_id", $"entity_name")
    .write
    .format("parquet")
    .insertInto(business_views)
    

На самом деле нам нужно очистить некоторые разделы таблицы сценарием оболочки, пока в этой таблице записывается задание spark.

Когда я запускал откат (очистку раздела) во время spark sqlРабота Я получил эти ошибки:

org.apache.spark.SparkException: Работа прервана. at com.socgen.drhg.dhr.utils.DbUtils $ .writeToTableBv (DbUtils.scala: 92)

и

Вызывается: org.apache.hadoop. security.AccessControlException: В доступе отказано: пользователь = XXXXXX, доступ = EXECUTE, inode = "/ XXXXXX / XXXXXX / XXXXXX / XXXXXX / бизнес-представления / источник = XXXXXX / исполнительный_идентификатор = XXXXXX / имя_хозяйства = XXXXXX-: hdf: hdf: hdf:---

Но с разделом перетаскивания работает (откат) нормально.

Я не уверен, что на эти два действия есть реальная связь

Наша конфигурация улья:

ACID не активирован hive.support.concurrency = false

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

Поэтому мой вопрос: есть ли проблема, если мы отбрасываем раздел, когда новые разделы создаются / обогащаются заданием sparkSql?

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