使用 Informatica 进行 Hive 更新



我的目标是使用Informatica ETL工具的Hive表。

Hive 早期版本不支持更新。那么在这种情况下,我应该如何更新记录。是否可以使用Hive ACID和事务功能进行Hive更新功能。

Informatica 确实支持 从 Informatica 9.6 HF3 版本更新 Hive 表,前提是这些表支持 ACID,有关更多信息,您可以参考此链接 (https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions),但与其这样做,我宁愿在两步过程中执行此操作,

1) 识别仅存在于目标中的所有记录和仅存在于阶段数据中的记录2)合并这两者并将它们加载到一个临时表中。3)最后将临时表重命名为实际的目标表名

以上仅适用于 SCD 类型 1 实现

更新不是最佳选择 在 Hive 上工作时,创建中间临时表是更好的设计。更新现有 Hive 表的步骤-

  1. 假设您正在处理表tbl_employee并希望更新几行。
  2. 创建新的中间表 - tbl_employee_update具有完全相同的记录数和更新的列数据。
  3. 创建新的中间表,其中包含原始表中的数据 - tbl_employee减去tbl_employee_update中已经存在的行。将此表命名为 tbl_employee_retained
  4. 在tbl_employee_retained和tbl_employee_update上做联合,并将其命名为tbl_employee_temp
  5. 现在,首先
  6. 确保tbl_employee_temp有记录和其他健全性检查,将tbl_employee替换为tbl_employee_temp。

您应该研究事件溯源 (https://msdn.microsoft.com/en-us/library/dn589792.aspx)。

将数据库视为存储事件而不是项目。因此,如果您有一些要在数据库中使用counter对象,而不是将counter从 0 更新到 1 再到 2 等,您只需在递增时插入一个新文档,然后获取这些文档的总和/计数。

最新更新