Будет ли запрос из Spark hivecontext заблокировать таблицу улья?

Я знаю, что если я отправлю запрос из Hive, будет получена общая блокировка, а затем таблица hive будет заблокирована запросом: https://cwiki.apache.org/confluence/display/Hive/Locking

Поэтому мне просто интересно, если запрос выполняется Spark Hivecontext, будет ли блокировка требоваться, и будет ли таблица также заблокирована? Кроме того, если я вставлю данные в таблицу через Spark Hivecontext, потребуется ли для этого эксклюзивная блокировка?

Спасибо

0 ответов

Он поддерживался в Spark SQL v.1.6 и не поддерживается в версиях 2.x и 3.x.

https://github.com/apache/spark/blob/branch-2.2/sql/catalyst/src/main/antlr4/org/apache/spark/sql/catalyst/parser/SqlBase.g4

unsupportedHiveNativeCommands
...
    | kw1=LOCK kw2=TABLE
    | kw1=LOCK kw2=DATABASE
    | kw1=UNLOCK kw2=TABLE
    | kw1=UNLOCK kw2=DATABASE

Spark 1.x позволяет явно заблокировать таблицу, используя sqlContext.sql("LOCK <table> [EXCLUSIVE]"), Сначала вы должны включить параллелизм Hive, выполнив sqlContext.setConf("hive.support.concurrency","true"),

Однако, если вы попытаетесь сделать то же самое LOCK <table>... в Spark 2+ вы получите ошибку

org.apache.spark.sql.catalyst.parser.ParseException:
Operation not allowed: LOCK TABLE(line 1, pos 0)
Другие вопросы по тегам