Invio di lavori Spark per la conversione da MoR a CoW
Si applica a: Motore a scintilla Glutine accelerato Motore a scintilla
Questo argomento descrive come eseguire un lavoro Spark che aiuta a sincronizzare i dati della tabella Iceberg dal formato Merge-on-Read ( MoR ) al formato Copy-on-Write ( CoW ). Le operazioni di lettura sono più efficienti con le tabelle Iceberg Copy-On-Write.
Per la conversione è possibile utilizzare uno dei seguenti metodi:
- Registrare la tabella COW: questo approccio crea un riferimento nominato per la tabella MoR utilizzando l'API Iceberg Register_table, che punta a una versione compattata e coerente della tabella MoR e serve come tabella CoW. Questo metodo è consigliato ed è più economico.
- Change Data Capture(CDC): Questo approccio mantiene due copie della tabella. Una è la tabella MoR, dove vengono effettuati gli aggiornamenti, e la seconda è una tabella CoW, che funge da specchio della tabella MoR. Il job Spark recupera le modifiche dalla tabella MoR tra l'ultima istantanea sincronizzata e l'ultima istantanea utilizzando la procedura Iceberg CDC e le unisce alla tabella CoW. Questo approccio è più costoso di quello della tabella dei registri, poiché mantiene una replica della tabella MoR.
Informazioni su quest'attività
Approccio del registro COW Table
Se si dispone di una tabella Merge-on-Read ( MoR ), è possibile specificare i valori dei parametri necessari e utilizzare il seguente payload di esempio per eseguire il lavoro di conversione. Il lavoro sincronizza le operazioni Iceberg nella tabella MoR e genera una tabella Cow compatta.
{
"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>"
},
}
}
Valori di parametro:
<catalog-name>: Il catalogo Iceberg dove è disponibile la tabella MoR.<database-name>il database in cui è disponibile la tabella MoR.<mor-table-name>: nome della tabella MoR.<cow-table-name>nome della tabella CoW che viene sincronizzata con la tabella MoR.<encoded-api-key>: Il valore deve essere nel formato echo -n "ibmlhapikey_<user_id>:<chiave api dell'utente>" | base64. Qui, <user_id> è l'ID IBM Cloud dell'utente la cui chiave api è usata per accedere al bucket dei dati. <IAM_APIKEY> è la chiave API dell'utente che accede al bucket Object Store. Per generare una chiave API, accedere alla console watsonx.data e navigare in Profilo > Profilo e impostazioni > Chiavi API e generare una nuova chiave API.
Approccio di acquisizione dei dati di modifica (CDC)
Se si dispone di una tabella Merge-on-Read ( MoR ), è possibile specificare i valori dei parametri necessari e utilizzare il seguente payload di esempio per eseguire il lavoro di conversione. Il lavoro sincronizza le operazioni Iceberg nella tabella MoR e genera una tabella Cow compatta.
{
"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>",
}
}
}
Valori di parametro:
<catalog-name>: Il catalogo Iceberg dove è disponibile la tabella MoR.<database-name>il database in cui è disponibile la tabella MoR.<mor-table-name>: nome della tabella MoR.<cow-table-name>nome della tabella CoW che viene sincronizzata con la tabella MoR.<primary-key>la chiave primaria utilizzata per creare la tabella CoW.<encoded-api-key>: Il valore deve essere nel formato echo -n "ibmlhapikey_<user_id>:<chiave api dell'utente>" | base64. Qui, <user_id> è l'ID IBM Cloud dell'utente la cui chiave api è usata per accedere al bucket dei dati. <IAM_APIKEY> è la chiave API dell'utente che accede al bucket Object Store. Per generare una chiave API, accedere alla console watsonx.data e navigare in Profilo > Profilo e impostazioni > Chiavi API e generare una nuova chiave API.