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.