Übermittlung von Spark-Aufträgen zur Konvertierung von MoR zu CoW

Gilt für: Funkenmotor Gluten beschleunigter Funkenmotor

In diesem Thema wird beschrieben, wie man einen Spark-Job ausführt, der dabei hilft, Iceberg-Tabellendaten vom Merge-on-Read-Format ( MoR ) in das Copy-on-Write-Format ( CoW ) zu synchronisieren. Lesevorgänge sind mit Iceberg Copy-On-Write-Tabellen effizienter.

Sie können eine der folgenden Methoden für die Konvertierung verwenden:

  • COW-Tabelle registrieren: Bei diesem Ansatz wird mithilfe der Iceberg Register_table API ein benannter Verweis für die Tabelle MoR erstellt, der auf eine komprimierte konsistente Version der Tabelle MoR verweist und als Tabelle CoW dient. Diese Methode wird empfohlen und ist kostengünstiger.
  • Change Data Capture(CDC): Bei diesem Ansatz werden zwei Kopien der Tabelle verwaltet. Eine ist die Tabelle MoR, in der die Aktualisierungen vorgenommen werden, und die zweite ist eine Tabelle CoW, die als Spiegelung der Tabelle MoR dient. Der Spark-Job ruft die Änderungen aus der Tabelle MoR zwischen dem letzten synchronisierten Snapshot und dem letzten Snapshot mithilfe des CDC-Verfahrens von Iceberg ab und führt sie in der Tabelle CoW zusammen. Dieser Ansatz ist kostspieliger als der Ansatz der Registertabelle, da er ein Replikat der Tabelle MoR verwaltet.

Informationen zu dieser Task

Register COW Tabellenansatz

Wenn Sie eine Merge-on-Read-Tabelle ( MoR ) haben, können Sie die erforderlichen Parameterwerte angeben und die folgende Beispiel-Payload verwenden, um den Konvertierungsauftrag auszuführen. Der Auftrag synchronisiert die Iceberg-Vorgänge in der Tabelle MoR und erzeugt eine kompakte Kuh-Tabelle.

{
    "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>"
        },
    }
}

Parameterwerte:

  • <catalog-name>: Der Iceberg-Katalog, in dem die Tabelle MoR verfügbar ist.
  • <database-name>: Die Datenbank, in der die Tabelle MoR verfügbar ist.
  • <mor-table-name>: Der Name der Tabelle MoR.
  • <cow-table-name> CoW: Der Name der Tabelle, die mit der Tabelle MoR synchronisiert wird.
  • <encoded-api-key> der Wert muss das Format echo -n "ibmlhapikey_<Benutzer_id>:<Benutzer-Api-Schlüssel>" haben | base64. Hier ist <user_id> die IBM Cloud ID des Benutzers, dessen API-Schlüssel für den Zugriff auf den Datenbereich verwendet wird. Der <IAM_APIKEY> ist hier der API-Schlüssel des Benutzers, der auf den Objektspeicherbereich zugreift. Um einen API-Schlüssel zu generieren, melden Sie sich in der Konsole watsonx.data an und navigieren zu Profil > Profil und Einstellungen > API-Schlüssel und generieren einen neuen API-Schlüssel.

Ansatz der Änderungsdatenerfassung (CDC)

Wenn Sie eine Merge-on-Read-Tabelle ( MoR ) haben, können Sie die erforderlichen Parameterwerte angeben und die folgende Beispiel-Payload verwenden, um den Konvertierungsauftrag auszuführen. Der Auftrag synchronisiert die Iceberg-Vorgänge in der Tabelle MoR und erzeugt eine kompakte Kuh-Tabelle.

{
    "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>",
        }
    }
}

Parameterwerte:

  • <catalog-name>: Der Iceberg-Katalog, in dem die Tabelle MoR verfügbar ist.
  • <database-name>: Die Datenbank, in der die Tabelle MoR verfügbar ist.
  • <mor-table-name>: Der Name der Tabelle MoR.
  • <cow-table-name> CoW: Der Name der Tabelle, die mit der Tabelle MoR synchronisiert wird.
  • <primary-key> primärschlüssel: Der Primärschlüssel, der für die Erstellung der Tabelle CoW verwendet wird.
  • <encoded-api-key> der Wert muss das Format echo -n "ibmlhapikey_<Benutzer_id>:<Benutzer-Api-Schlüssel>" haben | base64. Hier ist <user_id> die IBM Cloud ID des Benutzers, dessen API-Schlüssel für den Zugriff auf den Datenbereich verwendet wird. Der <IAM_APIKEY> ist hier der API-Schlüssel des Benutzers, der auf den Objektspeicherbereich zugreift. Um einen API-Schlüssel zu generieren, melden Sie sich in der Konsole watsonx.data an und navigieren zu Profil > Profil und Einstellungen > API-Schlüssel und generieren einen neuen API-Schlüssel.