Envío de trabajos Spark para su conversión de MoR a CoW

Se aplica a: motor Spark Motor Spark acelerado por gluten

Este tema describe cómo ejecutar una tarea Spark que ayuda a sincronizar los datos de la tabla Iceberg desde el formato Merge-on-Read ( MoR ) al formato Copy-on-Write ( CoW ). Las operaciones de lectura son más eficientes con las tablas Iceberg Copy-On-Write.

Puede utilizar uno de los siguientes métodos para la conversión:

  • Registrar tabla COW: Este enfoque crea una referencia con nombre para la tabla MoR utilizando la API Register_table de Iceberg, que apunta a una versión coherente compactada de la tabla MoR y sirve como tabla CoW. Este método se recomienda y es más rentable.
  • Captura de datos de cambios(CDC): Este enfoque mantiene dos copias de la tabla. Una es la tabla MoR, donde se realizan las actualizaciones, y la segunda es una tabla CoW, que sirve de espejo de la tabla MoR. El trabajo Spark recupera los cambios de la tabla MoR entre la última instantánea sincronizada y la última instantánea mediante el procedimiento Iceberg CDC y los fusiona en la tabla CoW. Este enfoque es más costoso que el de la tabla de registro, ya que mantiene una réplica de la tabla MoR.

Acerca de esta tarea

Registro Planteamiento de la tabla COW

Si dispone de una tabla Merge-on-Read ( MoR ), puede especificar los valores de los parámetros necesarios y utilizar la siguiente carga útil de ejemplo para ejecutar el trabajo de conversión. El trabajo sincroniza las operaciones Iceberg en la tabla MoR y genera una tabla Cow compacta.

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

Valores de parámetros:

  • <catalog-name>: El catálogo Iceberg donde está disponible la tabla MoR.
  • <database-name>: La base de datos donde está disponible la tabla MoR.
  • <mor-table-name>: Nombre de la tabla MoR.
  • <cow-table-name>: Nombre de la tabla CoW que se sincroniza con la tabla MoR.
  • <encoded-api-key>: El valor debe estar en el formato echo -n "ibmlhapikey_<user_id>:<user's api key>" | base64. Aquí, <user_id> es el ID de IBM Cloud del usuario cuya clave api se utiliza para acceder al bucket de datos. El <IAM_APIKEY> aquí es la clave de API del usuario que accede al cubo del almacén de objetos. Para generar una clave API, inicie sesión en la consola watsonx.data y vaya a Perfil > Perfil y configuración > Claves API y genere una nueva clave API.

Enfoque de Captura de Datos de Cambios (CDC)

Si dispone de una tabla Merge-on-Read ( MoR ), puede especificar los valores de los parámetros necesarios y utilizar la siguiente carga útil de ejemplo para ejecutar el trabajo de conversión. El trabajo sincroniza las operaciones Iceberg en la tabla MoR y genera una tabla Cow compacta.

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

Valores de parámetros:

  • <catalog-name>: El catálogo Iceberg donde está disponible la tabla MoR.
  • <database-name>: La base de datos donde está disponible la tabla MoR.
  • <mor-table-name>: Nombre de la tabla MoR.
  • <cow-table-name>: Nombre de la tabla CoW que se sincroniza con la tabla MoR.
  • <primary-key>: La clave primaria que se utiliza para crear la tabla CoW.
  • <encoded-api-key>: El valor debe estar en el formato echo -n "ibmlhapikey_<user_id>:<user's api key>" | base64. Aquí, <user_id> es el ID de IBM Cloud del usuario cuya clave api se utiliza para acceder al bucket de datos. El <IAM_APIKEY> aquí es la clave de API del usuario que accede al cubo del almacén de objetos. Para generar una clave API, inicie sesión en la consola watsonx.data y vaya a Perfil > Perfil y configuración > Claves API y genere una nueva clave API.