View a markdown version of this page

Gerenciamento de metadados Iceberg - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Gerenciamento de metadados Iceberg

Quando você cria um grupo de recursos com o formato de tabela Iceberg, a Amazon SageMaker Feature Store cria e gerencia a tabela Iceberg subjacente em seu nome usando valores de configuração padrão. Você pode configurar as propriedades da tabela Iceberg na criação do grupo de recursos, atualizar as propriedades em um grupo de recursos existente e visualizar as propriedades atualmente definidas na tabela. Essas configurações oferecem controle sobre os parâmetros de configuração, como retenção de instantâneos, gerenciamento de arquivos de metadados e comportamento de gravação para gerenciar o tamanho geral e o desempenho da tabela da sua loja offline.

Somente um subconjunto das propriedades da tabela Iceberg foi validado para compatibilidade com o Feature Store. Configurar propriedades fora desse conjunto suportado não garante o comportamento correto. Para ver a lista completa das propriedades compatíveis, consultePropriedades permitidas do Iceberg.

Pré-requisito: Seu grupo de recursos deve ter uma loja offline usando o formato de tabela Iceberg.

Importante

Se as propriedades não permitidas do Iceberg forem alteradas, a Feature Store não pode garantir a compatibilidade contínua e pode levar à incapacidade de gravar na loja offline.

IcebergProperties tipo

O IcebergProperties tipo fornece um invólucro validado para configurações de propriedades do Iceberg, garantindo que todas as chaves pertençam ao conjunto permitido e evitando entradas duplicadas.

class IcebergProperties(Base): """Configuration for Iceberg table properties in a Feature Group offline store.""" properties: Optional[Dict[str, str]] = None

Validando propriedades

Chaves inválidas e duplicadas resultam em um erro ao serem passadas para a função de criação ou atualização. Opcionalmente, você pode validar as chaves usando o validate_property_keys() método. Isso é útil ao adicionar ou remover propriedades de um IcebergProperties objeto existente.

iceberg_properties = IcebergProperties( # Validates on creation properties={ "write.target-file-size-bytes": "268435456", "write.delete.mode": "merge-on-read", } ) # Add non-allowed property iceberg_properties.properties.update({"write.delete.isolation-level": "Snapshot"}) # Validate again — throws error because of non-allowed property iceberg_properties.validate_property_keys()

Crie um grupo de recursos com propriedades do Iceberg

A FeatureGroupManager.create função aceita um iceberg_properties parâmetro do tipoIcebergProperties. Ele cria um grupo de recursos e aguarda a conclusão da criação antes de atualizar as propriedades do Iceberg na tabela subjacente AWS Glue .

Como alternativa, você pode criar uma chamada FeatureGroupcreate, e então passar o objeto do grupo de recursos para a FeatureGroupManager classe e a chamada update para evitar o bloqueio enquanto o grupo de recursos termina de ser criado.

fg = FeatureGroupManager.create( # ...other parameters... offline_store_config=OfflineStoreConfig( s3_storage_config=S3StorageConfig(s3_uri="s3://my-bucket/features/"), table_format="Iceberg", # Must use Iceberg table format ), iceberg_properties=IcebergProperties( properties={ "write.target-file-size-bytes": "536870912", "history.expire.min-snapshots-to-keep": "3", } ), )

Atualizar as propriedades do Iceberg em um grupo de recursos existente

A update função aceita um iceberg_properties parâmetro do tipoIcebergProperties. Ele pega um grupo de recursos já criado, recupera o AWS Glue Data Catalog da loja offline e define as propriedades especificadas do Iceberg.

fg = FeatureGroupManager.get(feature_group_name="my-feature-group") fg.update( iceberg_properties=IcebergProperties( properties={ "write.target-file-size-bytes": "268435456", "write.delete.mode": "merge-on-read", } ), )

Exibir propriedades do Iceberg em um grupo de recursos

A FeatureGroupManager.get função aceita um include_iceberg_properties parâmetro. Quando definido comoTrue, ele recupera as propriedades do Iceberg que foram definidas manualmente e fazem parte da lista permitida e as adiciona ao iceberg_properties campo no objeto retornado.

Isso só retorna as propriedades do conjunto que fazem parte da lista permitida. Para obter todas as propriedades da AWS Glue tabela, use a AWS Glue API diretamente. Se uma propriedade Iceberg permitida não aparecer, ela não foi explicitamente definida e usa seu valor padrão.

fg = FeatureGroupManager.get( feature_group_name="my-feature-group", include_iceberg_properties=True, ) print(fg.iceberg_properties.properties) # e.g. {"write.target-file-size-bytes": "536870912"}

Permissões obrigatórias

Certifique-se de que as políticas AmazonSageMakerFullAccess gerenciadas AmazonSageMakerFeatureStoreAccess e as políticas estejam vinculadas à função do IAM que você está usando. Gerencie sua política com base no seu padrão de acesso.

Propriedades permitidas do Iceberg

A tabela a seguir lista as propriedades da tabela Iceberg que foram validadas para uso com o Feature Store. Para obter mais informações sobre essas propriedades, consulte Configuração da tabela na documentação do Apache Iceberg.

Propriedades permitidas da tabela Iceberg
Propriedade Valor padrão Description
write.metadata.delete-after-commit.enabled false Controla se os arquivos de metadados da versão rastreada mais antiga devem ser excluídos após cada confirmação da tabela.
write.metadata.previous-versions-max 100 O número máximo de arquivos de metadados da versão anterior a serem rastreados.
history.expire.max-snapshot-age-ms 432000000(5 dias) A idade máxima padrão dos instantâneos para manter na tabela e em todas as suas ramificações enquanto os instantâneos expiram.
history.expire.min-snapshots-to-keep 1 Número mínimo padrão de instantâneos para manter na tabela e em todas as suas ramificações enquanto os instantâneos expiram.
history.expire.max-ref-age-ms Long.MAX_VALUE(para sempre) Para referências de instantâneos, exceto a main ramificação, a idade máxima padrão das referências de instantâneos deve ser mantida enquanto os instantâneos expiram. A main filial nunca expira.
write.target-file-size-bytes 536870912(512 MB) Controla o tamanho dos arquivos gerados para atingir esse número de bytes.
write.delete.target-file-size-bytes 67108864(64 MB) Controla o tamanho dos arquivos de exclusão gerados para atingir esse número de bytes.
write.delete.mode copy-on-write Modo usado para excluir comandos: copy-on-write ou merge-on-read (v2 e superior).
write.update.mode copy-on-write Modo usado para comandos de atualização: copy-on-write ou merge-on-read (v2 e superior).
write.delete.granularity partition Controla a granularidade dos arquivos de exclusão gerados: partition ou. file
write.parquet.row-group-size-bytes 134217728(128 MB) Tamanho do grupo de linhas de parquet.
read.split.target-size 134217728(128 MB) Tamanho do alvo ao combinar divisões de entrada de dados.
read.split.metadata-target-size 33554432(32 MB) Tamanho do alvo ao combinar divisões de entrada de metadados.
read.split.open-file-cost 4194304(4 MB) O custo estimado para abrir um arquivo, usado como peso mínimo ao combinar divisões.