Organização do conteúdo do catálogo

Este tópico fornece instruções sobre como criar namespaces e tabelas para um catálogo interno no Snowflake Open Catalog.

Importante

Para garantir que os privilégios de acesso definidos para um catálogo sejam aplicados corretamente, as seguintes condições devem ser atendidas:

  • Um diretório contém apenas os arquivos de dados que pertencem a uma única tabela.

  • Uma hierarquia de diretório corresponde à hierarquia de namespace do catálogo.

Por exemplo, se um catálogo inclui os seguintes itens:

  • Namespace de nível superior namespace1

  • Namespace aninhado namespace1a

  • Uma tabela de customers agrupada sob o namespace aninhado namespace1a

  • Uma tabela de orders agrupada sob o namespace aninhado namespace1a

A hierarquia de diretório para o catálogo deve ser:

  • /namespace1/namespace1a/customers/<files for the customers table *only*>

  • /namespace1/namespace1a/orders/<files for the orders table *only*>

Organização do conteúdo do catálogo

Um administrador de catálogo pode usar o Open Catalog ou um mecanismo de consulta de terceiros para organizar o conteúdo do catálogo da seguinte forma:

Objeto

Uso

Namespace

<ul><li>Catálogo aberto</li><li>Mecanismo de consulta de terceiros</li></ul>

Tabela

Mecanismo de consulta de terceiros

Observação

As tabelas e os namespaces de um catálogo externo são somente leitura no Open Catalog. Se você precisar organizar o conteúdo do catálogo para um catálogo externo, deverá usar o Snowflake. Para obter mais informações, consulte Tabelas do Apache Iceberg™ gerenciadas pelo Snowflake.

O código de exemplo neste tópico mostra como usar o Apache Spark para organizar o conteúdo do catálogo. O código de exemplo está em PySpark.

Criação de um namespace

Esta seção fornece instruções para criar namespaces de nível superior ou aninhados.

Importante

Ao criar um namespace, não use pontos ou espaços no nome do namespace.

Crie um namespace de nível superior

Para criar um namespace de nível superior, você pode usar o Apache Spark ou o Open Catalog.

Exemplo: Crie um namespace de nível superior usando o Apache Spark

O código de exemplo a seguir cria um namespace de nível superior chamado namespace1 no catálogo catalog1:

spark.sql("use catalog1").show()
spark.sql("CREATE NAMESPACE namespace1")
Copy

Criação de um namespace de nível superior usando o Open Catalog

  1. Entre no Open Catalog.

  2. No menu à esquerda, selecione Catálogos.

  3. Na lista de catálogos, selecione o catálogo onde deseja criar um namespace de nível superior.

  4. Selecione + Namespace.

  5. Para Nome, insira um nome para o namespace e selecione Enviar.

Criação de um namespace aninhado

Para criar um namespace aninhado, você pode usar o Apache Spark ou o Open Catalog.

Exemplo: Crie um namespace aninhado usando o Apache Spark

O código de exemplo a seguir cria um namespace aninhado chamado namespace1a no catálogo catalog1. Este namespace aninhado é criado sob o namespace de nível superior existente, namespace1:

spark.catalog.setCurrentCatalog("catalog1")
spark.sql("use catalog1").show()
spark.sql("CREATE NAMESPACE namespace1.namespace1a")
Copy

Crie um namespace aninhado usando o Open Catalog

  1. Entre no Open Catalog.

  2. No menu à esquerda, selecione Catálogos.

  3. Na lista de catálogos, selecione o catálogo onde deseja criar um namespace aninhado.

  4. Na guia Namespaces, navegue até o namespace pai onde deseja criar o namespace aninhado.

  5. Selecione + Namespace.

  6. Para Nome, insira um nome para o namespace aninhado e selecione Enviar.

Criação de uma tabela

Esta seção fornece exemplos para criar tabelas usando o Apache Spark.

Exemplo: Como criar uma tabela

O código de exemplo a seguir cria uma tabela customers no namespace aninhado, namespace1a, no catálogo catalog1. Ele é criado com colunas id e custnum, e o tipo de dados para ambas as colunas é inteiro:

spark.sql("use catalog1").show()
spark.sql ("use namespace1.namespace1a")
spark.sql("CREATE OR REPLACE TABLE customers (id int, custnum int) using iceberg")
Copy

Exemplo: Como inserir linhas em uma tabela

O código de exemplo a seguir insere uma linha na tabela customers:

spark.sql("use catalog1").show()
spark.sql ("use namespace1.namespace1a")
spark.sql("INSERT INTO customers VALUES (123,456)")
Copy