Sqoop:sqoop导出DB2 loack

时间:2018-02-14 13:35:46

标签: sqoop

在将数据从配置单元导出到db2时,sqoop导出是否会发出任何锁定? 它会发出什么类型的锁?如果有锁,这些锁是如何释放的?

由于在同一个db2表上运行并行sqoop导出进程,因此出现验证错误。因此,想知道是否发出了锁和什么类型的锁。

1 个答案:

答案 0 :(得分:0)

是的,Aavik,DB2支持锁。共有三种类型的锁。

1. S lock (share)
2. U lock (update)
3. X lock (exclusive)

当您扫描表以读取数据时,例如,执行select * from table where <condition>时,它将对表进行读取操作,当从表中读取数据时,它将对表施加S锁,这意味着其他请求可以读取数据,但不能更新或写入。

在表上进行事务处理时,它会应用U锁。

当您插入新数据时,它会获得X锁,这意味着它不允许任何读取操作或更新操作。

  

因此,当您从Hive导出到DB2时,它获得X锁定   该表,因为它正在插入新记录。

进行sqoop导入时,它将获得表上的S锁。

这是一个非常普遍的问题,您有很多选择可以解决此问题。

1. maintain separate views/Tables for regular transactions.
2. Increase number of max retries or write a shell script which checks if DB2 is free from locks, basically you've to create a dependency, I know this will become bit complicated, there may be better ways to do though. 

希望这可以使您更好地理解。