如何安全地更新hive外部表

时间:2017-11-25 17:44:37

标签: hadoop hive

我有一个外部配置单元表,我想每天刷新数据文件。建议的方法是什么?

如果我只是覆盖文件,并且如果我们不幸的是有一些其他的hive查询与此表并行执行,那么这些查询会发生什么?他们会失败吗?或者我的HDFS操作会失败吗?或者他们会阻止,直到查询完成?

2 个答案:

答案 0 :(得分:0)

如果可用性是一个问题,空间不是问题,您可以执行以下操作:

  1. 为外部表创建一个同义词。访问表时,请确保所有查询都使用此同义词。
  2. 加载新数据时,请将其加载到名称不同的新表中。
  3. 加载完成后,将同义词指向新加载的表。
  4. 经过适当的时间(足以让任何正在运行的查询完成),请删除上一个表。

答案 1 :(得分:0)

首先..如果您正在访问任何表,它可能有两种类型的锁:

独占(如果数据被添加)和共享(如果数据被读取)..

所以如果你插入覆盖并将数据添加到表中,那么当你用其他查询访问该表时,它们将不会被执行,因为它将有一个独占锁,一旦插入覆盖查询完成,那么你可能访问该表。

请参阅以下链接:

https://cwiki.apache.org/confluence/display/Hive/Locking