使用 Informatica 更新 Hive

Hive Updates using Informatica

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

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

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

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

Informatica 确实支持从 Informatica 9.6 HF3 版本更新配置单元 tables,前提是 tables 支持 ACID,有关详细信息,您可以参考此 link(https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions),但与其这样做,我宁愿分两步进行,

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

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

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

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