Soumission des jobs Spark pour la conversion de MoR à CoW
S'applique à: Moteur d'allumage Gluten accéléré Moteur d'allumage
Cette rubrique décrit comment exécuter un job Spark qui aide à synchroniser les données des tables Iceberg du format Merge-on-Read ( MoR ) au format Copy-on-Write ( CoW ). Les opérations de lecture sont plus efficaces avec les tables Iceberg Copy-On-Write.
Vous pouvez utiliser l'une des méthodes suivantes pour la conversion :
- Enregistrer la table COW: cette approche crée une référence nommée pour la table MoR en utilisant l'API Iceberg Register_table, qui pointe vers une version compacte et cohérente de la table MoR et sert de table CoW. Cette méthode est recommandée et plus rentable.
- Change Data Capture(CDC): Cette approche permet de conserver deux copies de la table. La première est la table MoR, où les mises à jour sont effectuées, et la seconde est une table CoW, qui sert de miroir à la table MoR. Le job Spark récupère les modifications de la table MoR entre le dernier snapshot synchronisé et le dernier snapshot à l'aide de la procédure Iceberg CDC et les fusionne dans la table CoW. Cette approche est plus coûteuse que celle de la table de registre car elle maintient une réplique de la table MoR.
A propos de cette tâche
Approche du registre COW Table
Si vous disposez d'une table Merge-on-Read ( MoR ), vous pouvez spécifier les valeurs des paramètres nécessaires et utiliser l'exemple de charge utile suivant pour exécuter le travail de conversion. Cette tâche synchronise les opérations Iceberg dans la table MoR et génère une table Cow compacte.
{
"application_details": {
"application": "/opt/ibm/spark/builtin-apps/iceberg/iceberg-apps.jar",
"class": "com.ibm.iceberg.apps.RegisterCowTable",
"arguments": [
"--catalog","<catalog-name>",
"--database","<database-name>",
"--mor-table","<mor-table-name>",
"--cow-table","<cow-table-name>"
],
"conf": {
"spark.hadoop.wxd.apikey" : "Basic <encoded-api-key>"
},
}
}
Valeurs des paramètres :
<catalog-name>: Le catalogue Iceberg où la table MoR est disponible.<database-name>la base de données dans laquelle la table MoR est disponible.<mor-table-name>nom de la table MoR.<cow-table-name>nom de la table CoW qui est synchronisée avec la table MoR.<encoded-api-key>: La valeur doit être au format echo -n "ibmlhapikey_<user_id>:<clef d'api de l'utilisateur>" | base64. Ici, <user_id> est l'identifiant IBM Cloud de l'utilisateur dont la clé api est utilisée pour accéder au réservoir de données. La <IAM_APIKEY> est la clé API de l'utilisateur qui accède au magasin d'objets. Pour générer une clé API, connectez-vous à la console watsonx.data et naviguez vers Profil > Profil et paramètres > Clés API et générez une nouvelle clé API.
Approche de la capture des données de changement (CDC)
Si vous disposez d'une table Merge-on-Read ( MoR ), vous pouvez spécifier les valeurs des paramètres nécessaires et utiliser l'exemple de charge utile suivant pour exécuter le travail de conversion. Cette tâche synchronise les opérations Iceberg dans la table MoR et génère une table Cow compacte.
{
"application_details": {
"application": "/opt/ibm/spark/builtin-apps/iceberg/iceberg-apps.jar",
"class": "com.ibm.iceberg.apps.CDCSync",
"arguments": [
"--catalog","<catalog-name>",
"--database","<database-name>",
"--mor-table","<mor-table-name>",
"--cow-table","<cow-table-name>",
"--primary-key","<primary-key>"
],
"conf": {
"spark.hadoop.wxd.apikey" : "Basic <encoded-api-key>",
}
}
}
Valeurs des paramètres :
<catalog-name>: Le catalogue Iceberg où la table MoR est disponible.<database-name>la base de données dans laquelle la table MoR est disponible.<mor-table-name>nom de la table MoR.<cow-table-name>nom de la table CoW qui est synchronisée avec la table MoR.<primary-key>: Clé primaire utilisée pour la création de la table CoW.<encoded-api-key>: La valeur doit être au format echo -n "ibmlhapikey_<user_id>:<clef d'api de l'utilisateur>" | base64. Ici, <user_id> est l'identifiant IBM Cloud de l'utilisateur dont la clé api est utilisée pour accéder au réservoir de données. La <IAM_APIKEY> est la clé API de l'utilisateur qui accède au magasin d'objets. Pour générer une clé API, connectez-vous à la console watsonx.data et naviguez vers Profil > Profil et paramètres > Clés API et générez une nouvelle clé API.