Update Strategy Transformation in the Hadoop Environment
The Update Strategy transformation processing in the Hadoop environment depends on the engine that runs the transformation.
Note: The Update Strategy transformation is supported only on Hadoop distributions that support Hive ACID.
Update Strategy Transformation Support on the Blaze Engine
You can use the Update Strategy transformation on the Hadoop distributions that support Hive ACID.
Some processing rules for the Blaze engine differ from the processing rules for the Data Integration Service.
General Restrictions
If the Update Strategy transformation receives multiple update rows for the same primary key value, the transformation selects one random row to update the target.
If multiple Update Strategy transformations write to different instances of the same target, the target data might be unpredictable.
The Blaze engine executes operations in the following order: deletes, updates, inserts. It does not process rows in the same order as the Update Strategy transformation receives them.
Hive targets always perform Update as Update operations. Hive targets do not support Update Else Insert or Update as Insert.
Mapping Validation and Compile Validation
Mapping validation fails in the following situations:
- •The Update Strategy transformation is connected to more than one target.
- •The Update Strategy transformation is not located immediately before the target.
- •The Update Strategy target is not a Hive target.
- •The Update Strategy transformation target is an external ACID table.
- •The target does not contain a primary key.
- •The Hive target property to truncate the target table at run time is enabled.
- •The Hive target property to create or replace the target table at run time is enabled.
The mapping fails in the following situation:
- •The target is not ORC bucketed.
- •The Hive target is modified to have fewer rows than the actual table.
Compile validation errors occur and the mapping execution stops in the following situations:
- •The Hive version is earlier than 0.14.
- •The target table is not enabled for transactions.
Using Hive Target Tables
To use a Hive target table with an Update Strategy transformation, you must create the Hive target table with the following clause in the Hive Data Definition Language: TBLPROPERTIES ("transactional"="true").
To use an Update Strategy transformation with a Hive target, verify that the following properties are configured in the hive-site.xml configuration set associated with the Hadoop connection:
hive.support.concurrency true
hive.enforce.bucketing true
hive.exec.dynamic.partition.mode nonstrict
hive.txn.manager org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
hive.compactor.initiator.on true
hive.compactor.worker.threads 1
Update Strategy Transformation Support on the Spark Engine
You can use the Update Strategy transformation on the Hadoop distributions that support Hive ACID.
Some processing rules for the Spark engine differ from the processing rules for the Data Integration Service.
General Restrictions
The Update Strategy transformation does not forward rejected rows to the next transformation.
If the Update Strategy transformation receives multiple update rows for the same primary key value, the transformation selects one random row to update the target.
If multiple Update Strategy transformations write to different instances of the same target, the target data might be unpredictable.
If the mapping runs on the Spark engine, you can choose the Use Hive Merge option. The option has the following restrictions:
- •If you run the mapping with Blaze or Hive, the Hive MERGE option is ignored. The Data Integration Service runs the transformation with the previous implementation.
- •A single row for delete or update cannot match multiple rows in the target. When the mapping violates this restriction, the mapping fails with a runtime error.
- •If you configure the Update Strategy expression to update partitioning or bucketing columns, the mapping ignores the Hive MERGE option. In addition, the mapping does not update the columns.
Note: The Developer tool and the Data Integration Service do not validate against these restrictions. If the expression or the mapping violates these restrictions, the mapping might run, but the results will not be as expected.
Hive targets always perform Update as Update operations. Hive targets do not support Update Else Insert or Update as Insert.
Mapping Validation
Mapping validation fails in the following situations:
- •The Update Strategy transformation is connected to more than one target.
- •The Update Strategy transformation is not located immediately before the target.
- •The Update Strategy target is not a Hive target.
- •The Update Strategy transformation target is an external ACID table.
- •The target does not contain a connected primary key.
- •The Hive target property to truncate the target table at run time is enabled.
- •The Hive target property to create or replace the target table at run time is enabled.
The mapping fails in the following situations:
- •The target table is not enabled for transactions.
- •The target is not ORC bucketed.
Using Hive Target Tables
To use a Hive target table with an Update Strategy transformation, you must create the Hive target table with the following clause in the Hive Data Definition Language: TBLPROPERTIES ("transactional"="true").
To use an Update Strategy transformation with a Hive target, verify that the following properties are configured in the hive-site.xml configuration set associated with the Hadoop connection:
hive.support.concurrency true
hive.enforce.bucketing true
hive.exec.dynamic.partition.mode nonstrict
hive.txn.manager org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
hive.compactor.initiator.on true
hive.compactor.worker.threads 1
Update Strategy Transformation Support on the Hive Engine
The Update Strategy transformation is supported only on Hadoop distributions that support Hive ACID.
Some processing rules for the Hive engine differ from the processing rules for the Data Integration Service.
General Restrictions
Hive targets always perform Update as Update operations. Hive targets do not support Update Else Insert or Update as Insert.
When the Update Strategy transformation receives multiple update rows for the same key, the results might differ.
Mapping Validation and Compile Validation
Mapping validation fails in the following situations:
- •The transformation is connected to more than one target.
- •The transformation is not connected directly to the target.
The mapping fails in the following situations:
- •The target is not ORC bucketed.
Compile validation errors occur and the mapping execution stops in the following situations:
- •The target is not a Hive target on the same cluster.
- •The Hive version is earlier than 0.14.
- •A primary key is not configured.