Sincronizar uma tabela gerenciada pelo Snowflake com Snowflake Open Catalog¶
Para consulta uma tabela Apache Iceberg™ gerenciada pelo Snowflake usando um mecanismo de terceiros, como o Apache Spark™, você pode sincronizar a tabela com o Snowflake Open Catalog.
Este tópico aborda como sincronizar uma tabela Iceberg gerenciada pelo Snowflake com o Snowflake Open Catalog usando uma integração de catálogo no Snowflake e um catálogo externo no Open Catalog.
Etapa 1: criar um volume externo¶
Se você ainda não tiver um, comece criando um volume externo no Snowflake que forneça acesso ao local de armazenamento em nuvem onde você deseja armazenar os dados da tabela e os metadados.
Siga as instruções para o seu serviço de armazenamento em nuvem:
Etapa 2: configurar recursos Open Catalog¶
Em seguida, conclua as etapas desta seção para criar um catálogo externo e uma conexão de serviço em sua conta Open Catalog.
Siga as instruções em Criar um catálogo para criar um catálogo externo na sua conta Open Catalog. Certifique-se de que as seguintes configurações para o catálogo externo estejam configuradas:
O botão External está habilitado.
O Default base location faz a correspondência do
STORAGE_BASE_URL
para o volume externo que você criou em Etapa 1: criar um volume externo.
O Open Catalog sincroniza suas tabelas gerenciadas pelo Snowflake com esse catálogo externo.
Se você ainda não tiver uma conexão de serviço para o Snowflake, siga as instruções em Configurar uma conexão de serviço para criar uma conexão para o mecanismo Snowflake na sua conta Open Catalog.
Configure uma função de catálogo para seu catálogo externo com privilégios que permitam acesso ao seu catálogo externo. Para obter instruções, consulte Conceder privilégios a um catálogo.
A função de catálogo deve ter os seguintes privilégios no catálogo:
TABLE_CREATE
TABLE_WRITE_PROPERTIES
TABLE_DROP
NAMESPACE_CREATE
NAMESPACE_DROP
Você pode conceder cada um desses privilégios à função de catálogo ou conceder o privilégio CATALOG_MANAGE_CONTENT, que inclui esses privilégios. Para obter mais informações, consulte Privilégios de catálogo para o Snowflake Open Catalog.
Anexe a função de catálogo à função principal para sua conexão de serviço. Isso permite que a conexão de serviço acesse o catálogo. Para obter instruções, consulte Conceder uma função de catálogo a uma função principal.
Etapa 3: criar uma integração de catálogo para o Open Catalog¶
Crie uma integração de catálogo para o Open Catalog usando o comando CREATE CATALOG INTEGRATION (Snowflake Open Catalog). Para WAREHOUSE, especifique o nome do catálogo externo que você configurou na sua conta Open Catalog.
Para solucionar problemas com a criação de uma integração de catálogo, consulte Não é possível criar uma integração de catálogo para o Open Catalog.
CREATE OR REPLACE CATALOG INTEGRATION my_open_catalog_int
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'myOpenCatalogNamespace'
REST_CONFIG = (
CATALOG_URI = 'https://myAccount.snowflakecomputing.com/polaris/api/catalog'
WAREHOUSE = 'myOpenCatalogExternalCatalogName'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'myClientId'
OAUTH_CLIENT_SECRET = 'myClientSecret'
OAUTH_ALLOWED_SCOPES = ('PRINCIPAL_ROLE:ALL')
)
ENABLED = TRUE;
Nota
Você pode usar essa integração de catálogo para sincronizar uma ou mais tabelas gerenciadas pelo Snowflake.
Etapa 4: criar uma tabela gerenciada pelo Snowflake¶
Crie uma tabela Iceberg gerenciada pelo Snowflake usando o comando CREATE ICEBERG TABLE (Snowflake como o catálogo Iceberg).
Para o parâmetro CATALOG_SYNC, especifique o nome da sua integração de catálogo para o Open Catalog.
Para solucionar problemas com a criação de uma tabela gerenciada pelo Snowflake, consulte Não é possível criar uma tabela gerenciada pelo Snowflake.
CREATE OR REPLACE ICEBERG TABLE my_managed_iceberg_table (col1 INT)
CATALOG = 'SNOWFLAKE'
EXTERNAL_VOLUME = 'my_external_volume'
BASE_LOCATION = 'my_managed_iceberg_table'
CATALOG_SYNC = 'my_open_catalog_int';
Quando você modifica a tabela no Snowflake, as alterações são sincronizadas automaticamente com o catálogo externo na sua conta Open Catalog. Outros mecanismos, como o Apache Spark™, podem consultar a tabela conectando-se ao Open Catalog.