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 aninhadonamespace1a
Uma tabela de
orders
agrupada sob o namespace aninhadonamespace1a
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")
Criação de um namespace de nível superior usando o Open Catalog¶
Entre no Open Catalog.
No menu à esquerda, selecione Catálogos.
Na lista de catálogos, selecione o catálogo onde deseja criar um namespace de nível superior.
Selecione + Namespace.
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")
Crie um namespace aninhado usando o Open Catalog¶
Entre no Open Catalog.
No menu à esquerda, selecione Catálogos.
Na lista de catálogos, selecione o catálogo onde deseja criar um namespace aninhado.
Na guia Namespaces, navegue até o namespace pai onde deseja criar o namespace aninhado.
Selecione + Namespace.
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")
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)")