使用Informatica进行Hive更新

时间:2016-04-25 04:47:49

标签: hive informatica

My Target是使用Informatica ETL工具的Hive表。

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

3 个答案:

答案 0 :(得分:1)

Informatica确实支持从Informatica 9.6 HF3版本更新hive表,前提是表格支持ACID,有关更多信息,请参阅此链接(https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions),但我宁愿这样做,分两步进行,

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

您应该查看事件采购(https://msdn.microsoft.com/en-us/library/dn589792.aspx)。

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