

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 do Iceberg
<a name="feature-store-iceberg-metadata-management"></a>

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 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 de sua loja offline.

Somente um subconjunto das propriedades da tabela Iceberg foi validado para compatibilidade com o Feature Store. A configuração de propriedades fora desse conjunto suportado não garante o comportamento correto. Para obter a lista completa das propriedades compatíveis, consulte[Propriedades permitidas do Iceberg](#feature-store-iceberg-allowed-properties).

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

**Importante**  
Se as propriedades não permitidas do Iceberg forem alteradas, a Feature Store não poderá garantir a compatibilidade contínua e poderá levar à incapacidade de escrever para a loja offline.

## IcebergProperties digitar
<a name="feature-store-iceberg-properties-type"></a>

O `IcebergProperties` tipo fornece um invólucro validado para as 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
<a name="feature-store-iceberg-validating-properties"></a>

Chaves inválidas e duplicadas resultam em um erro quando 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 name="feature-store-iceberg-create"></a>

A `FeatureGroupManager.create` função aceita um `iceberg_properties` parâmetro do tipo`IcebergProperties`. 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 `FeatureGroup``create`, depois passar o objeto do grupo de recursos para a `FeatureGroupManager` classe e chamar `update` para evitar o bloqueio enquanto o grupo de recursos termina de criar.

```
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 name="feature-store-iceberg-update"></a>

A `update` função aceita um `iceberg_properties` parâmetro do tipo`IcebergProperties`. 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",
        }
    ),
)
```

## Veja as propriedades do Iceberg em um grupo de recursos
<a name="feature-store-iceberg-get"></a>

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

Isso retorna somente 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 permitida do Iceberg não aparecer, ela não foi definida explicitamente 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
<a name="feature-store-iceberg-permissions"></a>

Certifique-se de que as políticas [AmazonSageMakerFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html)gerenciadas [AmazonSageMakerFeatureStoreAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFeatureStoreAccess.html)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 name="feature-store-iceberg-allowed-properties"></a>

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](https://iceberg.apache.org/docs/latest/configuration/) 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) | Idade máxima padrão dos instantâneos a serem mantidos 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 a serem mantidos 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 a serem mantidas durante a expiração dos instantâneos. 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 fileiras 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 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. | 