Criar tabelas Iceberg
Para criar uma tabela Iceberg para uso no Athena, você pode usar uma instrução CREATE TABLE
conforme documentada nesta página, ou pode usar um crawler do AWS Glue.
Usar uma instrução CREATE TABLE
O Athena cria tabelas do Iceberg v2. Para saber a diferença entre as tabelas da v1 e v2, consulte Alterações de versão do formato
A cláusula CREATE TABLE
do Athena cria uma tabela Iceberg sem dados. Você poderá consultar uma tabela diretamente de sistemas externos, como o Apache Spark, se a tabela usar o catálogo do Glue de código aberto do Iceberg
Atenção
Executar CREATE EXTERNAL TABLE
resulta na mensagem de erro External keyword not supported for table type ICEBERG
(Palavra-chave externa não compatível com o tipo de tabela ICEBERG).
Para criar uma tabela Iceberg no Athena, defina a propriedade 'table_type'
da tabela como 'ICEBERG'
na cláusula TBLPROPERTIES
, como no resumo da sintaxe a seguir.
CREATE TABLE [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] ) [PARTITIONED BY (col_name | transform, ... )] LOCATION 's3://DOC-EXAMPLE-BUCKET/
your-folder
/' TBLPROPERTIES ( 'table_type' ='ICEBERG' [,property_name
=property_value
] )
Para obter informações sobre os tipos de dados que você pode consultar em tabelas Iceberg, consulte Tipos de dados suportados para tabelas Iceberg no Athena.
Particionamento
Para criar tabelas Iceberg com partições, use a sintaxe PARTITIONED BY
. As colunas usadas para particionamento devem ser especificadas primeiro nas declarações de colunas. O tipo de coluna não deve ser incluído dentro da cláusula PARTITIONED BY
. Você também pode definir transformações de partiçãoCREATE TABLE
. Para especificar várias colunas para particionamento, separe as colunas por vírgula (,
), como no exemplo a seguir.
CREATE TABLE iceberg_table (id bigint, data string, category string) PARTITIONED BY (category, bucket(16, id)) LOCATION 's3://DOC-EXAMPLE-BUCKET/
your-folder
/' TBLPROPERTIES ( 'table_type' = 'ICEBERG' )
A tabela a seguir mostra as funções de transformação de partição disponíveis.
Função | Descrição | Tipos compatíveis |
---|---|---|
year(ts) |
Partição por ano | date , timestamp |
month(ts) |
Partição por mês | date , timestamp |
day(ts) |
Partição por dia | date , timestamp |
hour(ts) |
Partição por hora | timestamp |
bucket( |
Partição por buckets N de mod de valor por hash. Esse conceito é semelhante ao bucket por hash para tabelas do Hive. |
int , long , decimal ,
date , timestamp ,
string , binary
|
truncate( |
Partição por valor truncada para L |
int , long , decimal ,
string |
O Athena suporta o particionamento oculto do Iceberg. Para obter mais informações, consulte Particionamento oculto do Iceberg
Propriedade das tabelas
Esta seção descreve as propriedades de tabela que você pode especificar como pares de valores-chave na cláusula TBLPROPERTIES
da instrução CREATE TABLE
. O Athena permite apenas uma lista predefinida de pares de valores-chave nas propriedades da tabela para criar ou alterar tabelas Iceberg. As tabelas a seguir mostram as propriedades de tabela que você pode especificar. Para obter mais informações sobre essas opções de compactação, consulte Otimizar tabelas Iceberg mais adiante neste documento. Se você quiser que o Athena suporte uma propriedade específica de configuração de tabela de código aberto, envie comentários para athena-feedback@amazon.com
format
Descrição | Formato de dados do arquivo |
Valores de propriedade permitidos | O formato de arquivo compatível e as combinações de compactação variam conforme a versão do mecanismo Athena. Para ter mais informações, consulte Suporte à compressão de tabelas do Iceberg por formato de arquivo. |
Valor padrão | parquet |
write_compression
Descrição | Codec de compactação de arquivo |
Valores de propriedade permitidos | O formato de arquivo compatível e as combinações de compactação variam conforme a versão do mecanismo Athena. Para ter mais informações, consulte Suporte à compressão de tabelas do Iceberg por formato de arquivo. |
Valor padrão |
A compactação de gravação padrão varia conforme a versão do mecanismo Athena. Para ter mais informações, consulte Suporte à compressão de tabelas do Iceberg por formato de arquivo. |
optimize_rewrite_data_file_threshold
Descrição | Configuração específica de otimização de dados. Se houver menos arquivos de dados que exigem otimização do que o limite fornecido, os arquivos não serão regravados. Isso permite acumular mais arquivos de dados para produzir arquivos mais próximos do tamanho de destino e ignorar computação desnecessária para economizar custos. |
Valores de propriedade permitidos | Um número positivo. Deve ser menor que 50. |
Valor padrão | 5 |
optimize_rewrite_delete_file_threshold
Descrição | Configuração específica de otimização de dados. Se houver menos arquivos de exclusão associados a um arquivo de dados do que o limite, o arquivo de dados não será regravado. Isso permite acumular mais arquivos de exclusão para cada arquivo de dados para economizar custos. |
Valores de propriedade permitidos | Um número positivo. Deve ser menor que 50. |
Valor padrão | 2 |
vacuum_min_snapshots_to_keep
Descrição |
Número mínimo de snapshots a serem retidos na ramificação principal de uma tabela. Esse valor tem precedência sobre a propriedade |
Valores de propriedade permitidos | Um número positivo. |
Valor padrão | 1 |
vacuum_max_snapshot_age_seconds
Descrição | Período máximo para reter os snapshots na ramificação principal. Esse valor será ignorado se o mínimo restante de snapshots especificado por vacuum_min_snapshots_to_keep for maior que a idade especificada. Essa propriedade de comportamento da tabela corresponde à propriedade history.expire.max-snapshot-age-ms na configuração do Apache Iceberg. |
Valores de propriedade permitidos | Um número positivo. |
Valor padrão | 432 mil segundos (cinco dias) |
vacuum_max_metadata_files_to_keep
Descrição | O número máximo de arquivos de metadados anteriores a serem retidos na ramificação principal da tabela. |
Valores de propriedade permitidos | Um número positivo. |
Valor padrão | 100 |
Exemplo de instrução CREATE TABLE
O exemplo a seguir cria uma tabela do Iceberg com três colunas.
CREATE TABLE iceberg_table ( id int, data string, category string) PARTITIONED BY (category, bucket(16,id)) LOCATION 's3://DOC-EXAMPLE-BUCKET/
iceberg-folder
' TBLPROPERTIES ( 'table_type'='ICEBERG', 'format'='parquet', 'write_compression'='snappy', 'optimize_rewrite_delete_file_threshold'='10' )
CREATE TABLE AS SELECT (CTAS)
Para obter informações sobre a criação de uma tabela do Iceberg usando a instrução CREATE TABLE
AS
, consulte CREATE TABLE AS, com atenção especial à seção Propriedades da tabela CTAS.
Usar um crawler do AWS Glue
Você pode usar um crawler do AWS Glue para registrar automaticamente suas tabelas Iceberg no AWS Glue Data Catalog. Se quiser migrar de outro catálogo do Iceberg, você pode criar e agendar um crawler do AWS Glue e fornecer os caminhos do Amazon S3 onde as tabelas do Iceberg estão localizadas. Você pode especificar a profundidade máxima dos caminhos do Amazon S3 que o crawler do AWS Glue pode percorrer. Depois de agendar um crawler do AWS Glue, ele extrairá as informações do esquema e atualizará o AWS Glue Data Catalog com as alterações do esquema toda vez que for executado. O crawler do AWS Glue é compatível com a mesclagem de esquemas nos snapshots e atualiza o local mais recente do arquivo de metadados no AWS Glue Data Catalog. Para obter mais informações, consulte Data Catalog and crawlers in AWS Glue.