ALTER TABLE期间的Spark SQL表锁定tbl PARTITION SET LOCATION

时间:2018-03-30 10:12:56

标签: apache-spark hive apache-spark-sql azure-storage-blobs hdinsight

我们将Spark SQL 2.2.0与Hive Metastore一起使用(在HDInsight上)。 我们有外部表构建在Azure BLOB上存储的分区镶木地板文件上。数据将以镶木地板的形式发送到BLOB,我们对此没有影响。

我们需要接受分区数据更新(也称为重述),对以下内容的影响最小:

  • 对数据运行查询的下游系统(避免破解查询和等待很长时间等)

  • 数据更新过程(尽可能避免长时间等待和复杂逻辑)

我们正在考虑做这样的事情作为执行更新的方式(没什么特别的):

ALTER TABLE tbl PARTITION(YEAR=2018, MONTH=1, DAY=30) 
SET LOCATION 'wasb:///mylocation/table/20180130/v2'

我们可以期待哪些表(或分区)锁定机制/逻辑?我用Google搜索了,答案对我来说还不清楚。

我们可以使用Hive / Spark中的任何参数来控制它,除了用hive.support.concurrency开启/关闭所有并发性吗?

还有其他方法可以解决这类问题吗?我们测试了特定分区文件夹中的直接覆盖镶木地板文件,但它似乎更麻烦,因为它需要运行recoverPartitions并一遍又一遍地重新创建DataFrame。

0 个答案:

没有答案