Envio de trabalhos do Spark para conversão de MoR para CoW
Aplica-se a: Motor de faísca Motor de faísca acelerado com glúten
Este tópico descreve como executar um trabalho do Spark que ajuda a sincronizar os dados da tabela Iceberg do formato Merge-on-Read ( MoR ) para o formato Copy-on-Write ( CoW ). As operações de leitura são mais eficientes com as tabelas Iceberg Copy-On-Write.
Você pode usar um dos seguintes métodos para a conversão:
- Registrar tabela COW: Essa abordagem cria uma referência nomeada para a tabela MoR usando a API Iceberg Register_table, que aponta para uma versão consistente compactada da tabela MoR e serve como tabela CoW. Esse método é recomendado e é mais econômico.
- Captura de dados de alteração(CDC): Essa abordagem mantém duas cópias da tabela. Uma é a tabela MoR, na qual são feitas as atualizações, e a segunda é uma tabela CoW, que funciona como um espelho da tabela MoR. O trabalho do Spark recupera as alterações da tabela MoR entre o último instantâneo sincronizado e o último instantâneo usando o procedimento Iceberg CDC e as mescla na tabela CoW. Essa abordagem é mais cara do que a da tabela de registros, pois mantém uma réplica da tabela MoR.
Sobre essa tarefa
Registro de abordagem da tabela COW
Se você tiver uma tabela Merge-on-Read ( MoR ), poderá especificar os valores de parâmetros necessários e usar o payload de amostra a seguir para executar o trabalho de conversão. O trabalho sincroniza as operações do Iceberg na tabela MoR e gera uma tabela 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âmetro:
<catalog-name>: O catálogo do Iceberg onde a tabela MoR está disponível.<database-name>o banco de dados em que a tabela MoR está disponível.<mor-table-name>nome da tabela MoR: O nome da tabela.<cow-table-name>o nome da tabela CoW que é sincronizada com a tabela MoR.<encoded-api-key>o valor deve estar no formato echo -n "ibmlhapikey_<user_id>:<user's api key>" | base64. Aqui, <user_id> é a ID IBM Cloud do usuário cuja chave de API é usada para acessar o bucket de dados. A <IAM_APIKEY> aqui é a chave de API do usuário que está acessando o bucket do armazenamento de objetos. Para gerar uma chave de API, faça login no console watsonx.data e navegue até Profile > Profile and Settings > API Keys e gere uma nova chave de API.
Abordagem Change Data Capture (CDC)
Se você tiver uma tabela Merge-on-Read ( MoR ), poderá especificar os valores de parâmetros necessários e usar o payload de amostra a seguir para executar o trabalho de conversão. O trabalho sincroniza as operações do Iceberg na tabela MoR e gera uma tabela 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âmetro:
<catalog-name>: O catálogo do Iceberg onde a tabela MoR está disponível.<database-name>o banco de dados em que a tabela MoR está disponível.<mor-table-name>nome da tabela MoR: O nome da tabela.<cow-table-name>o nome da tabela CoW que é sincronizada com a tabela MoR.<primary-key>chave primária: A chave primária que é usada para criar a tabela CoW.<encoded-api-key>o valor deve estar no formato echo -n "ibmlhapikey_<user_id>:<user's api key>" | base64. Aqui, <user_id> é a ID IBM Cloud do usuário cuja chave de API é usada para acessar o bucket de dados. A <IAM_APIKEY> aqui é a chave de API do usuário que está acessando o bucket do armazenamento de objetos. Para gerar uma chave de API, faça login no console watsonx.data e navegue até Profile > Profile and Settings > API Keys e gere uma nova chave de API.