与桌面锁定相关的Spark Hive插入

时间:2017-09-20 15:59:20

标签: hadoop apache-spark hive

只是一个简单的问题。我试图执行一个版本为1.6.0的Spark程序,它利用Hive表上的并发加载。在insert中使用hiveContext.sql("insert . . .")语句是一种方法,因为我想在写入过程中确保表锁定,因为我在Spark文档表中看到的锁定和原子性不是使用DataFrame保存操作时确保。

  

"保存操作可以选择使用 SaveMode   指定如何处理现有数据(如果存在)。重要的是要   意识到这些保存模式不使用任何锁定而不是   原子。此外,执行覆盖时,数据将是   在写出新数据之前删除。"

如果在指定的配置单元表中访问/插入数据,如何确保hive表的原子性或锁定?

任何建议都很有帮助。非常感谢你。

1 个答案:

答案 0 :(得分:1)

解决方案取决于你需要什么原子写作。

最简单的可能性之一是使用分区外部表:

  1. 在spark job中,您不是将数据帧写入表,而是写入HDFS目录。
  2. 写完成后,向表中添加一个新分区,指向新目录。