我知道如果我从Hive提交查询,将获取共享锁,然后hive表将被查询锁定:https://cwiki.apache.org/confluence/display/Hive/Locking
所以我只是想知道查询是否由Spark Hivecontext执行,是否需要锁定并且表格也会被锁定?另外,如果我通过Spark Hivecontext将数据插入表中,它是否需要独占锁?
谢谢
答案 0 :(得分:0)
Spark 1.x允许您使用sqlContext.sql("LOCK <table> [EXCLUSIVE]")
显式锁定表。您首先应该通过执行sqlContext.setConf("hive.support.concurrency","true")
启用Hive并发。
但是,如果您尝试在Spark 2+中执行相同的LOCK <table>...
,则会出现错误
org.apache.spark.sql.catalyst.parser.ParseException:
Operation not allowed: LOCK TABLE(line 1, pos 0)
答案 1 :(得分:0)
Spark SQL v.1.6支持此功能,而2.x和3.x版本不支持。
unsupportedHiveNativeCommands
...
| kw1=LOCK kw2=TABLE
| kw1=LOCK kw2=DATABASE
| kw1=UNLOCK kw2=TABLE
| kw1=UNLOCK kw2=DATABASE