Materializar e disponibilizar recursos declarativos
Beta
Este recurso é Beta e está disponível nas seguintes regiões: us-east-1 e us-west-2.
Depois de criar suas definições de recursos declarativas, que são armazenadas no Unity Catalog, você pode gerar dados de recursos a partir da sua tabela de origem usando essas definições. Esse processo é chamado de materialização do seu recurso. Databricks cria e gerencia um pipeline declarativo LakeFlow Spark para popular tabelas no Unity Catalog para treinamento de modelos e pontuação de lotes ou disponibilização online.
Requisitos
- O recurso deve ser criado com a API declarativa de recursos e armazenado no Unity Catalog.
- Para requisitos de versão, consulte Requisitos.
Estruturas de dados da API
OfflineStoreConfig
Configuração para o armazenamento offline onde o recurso materializado será gravado. Quando materialize_features é chamado, o backend do repositório de recursos cria tabelas usando esse prefixo. Cada execução pipeline materializa os valores mais recentes dos recursos na tabela, de acordo com a materialização programada.
OfflineStoreConfig(
catalog_name: str, # Catalog name for the offline table where materialized features will be stored
schema_name: str, # Schema name for the offline table
table_name_prefix: str # Table name prefix for the offline table. The pipeline may create multiple tables with this prefix, each updated at different cadences
)
from databricks.feature_engineering.entities import OfflineStoreConfig
offline_store = OfflineStoreConfig(
catalog_name="main",
schema_name="feature_store",
table_name_prefix="customer_features"
)
OnlineStoreConfig
Configuração do armazenamento online, que armazena recurso utilizado pelo modelo de operação. A materialização cria tabelas Delta com o catalog.schema.table_name_prefix e transmite as tabelas para o Feature Store Online com o mesmo nome.
from databricks.feature_engineering.entities import OnlineStoreConfig
online_store = OnlineStoreConfig(
catalog_name="main",
schema_name="feature_store",
table_name_prefix="customer_features_serving",
online_store_name="customer_features_store"
)
MaterializedFeature
Representa um recurso declarativo que foi materializado, ou seja, que possui uma representação pré-computada disponível no Unity Catalog. Existe um recurso materializado distinto para a tabela offline e para a tabela online. Normalmente, os usuários não instanciarão um MaterializedFeature diretamente.
chamadas de funções da API
materialize_features()
Materializa uma lista de recursos declarativos em uma tabela Delta offline ou em um Feature Store Online.
FeatureEngineeringClient.materialize_features(
features: List[Feature], # List of declarative features to materialize
offline_config: OfflineStoreConfig, # Offline store config if materializing offline
online_config: Optional[OnlineStoreConfig] = None, # Online store config if materializing online
pipeline_state: Union[MaterializedFeaturePipelineScheduleState, str], # Materialization pipeline state - must be "ACTIVE"
cron_schedule: Optional[str] = None, # Materialization schedule, specified in quartz cron syntax. Currently must be provided.
) -> List[MaterializedFeature]:
O método retorna uma lista de recursos materializados, que contém metadados como o agendador cron que executa as atualizações de valores dos recursos e informações sobre as tabelas do Unity Catalog onde os recursos estão materializados.
Se forem fornecidos um OnlineStoreConfig e um OfflineStoreConfig , serão retornados dois recursos materializados para cada recurso fornecido, um para cada tipo de armazenamento.
Materializar para armazenamento offline
from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import OfflineStoreConfig
fe = FeatureEngineeringClient()
materialized = fe.materialize_features(
features=features,
offline_config=OfflineStoreConfig(
catalog_name="main",
schema_name="feature_store",
table_name_prefix="customer_features"
),
pipeline_state="ACTIVE",
cron_schedule="0 0 * * * ?" # Hourly
)
Materializar para armazenamento online
Para materializar um recurso em um evento online, você também deve materializá-lo em um evento offline. Tanto offline_config quanto online_config são obrigatórios.
from databricks.feature_engineering import FeatureEngineeringClient
from databricks.feature_engineering.entities import OfflineStoreConfig, OnlineStoreConfig
fe = FeatureEngineeringClient()
materialized = fe.materialize_features(
features=features,
offline_config=OfflineStoreConfig(
catalog_name="main",
schema_name="feature_store",
table_name_prefix="customer_features"
),
online_config=OnlineStoreConfig(
catalog_name="main",
schema_name="feature_store",
table_name_prefix="customer_features_serving",
online_store_name="customer_features_store"
),
pipeline_state="ACTIVE",
cron_schedule="0 0 * * * ?" # Hourly
)
list_materialized_features()
Retorna uma lista de todos os recursos materializados no metastore Unity Catalog do usuário.
Por default, são retornados no máximo 100 recursos. Você pode alterar esse limite usando o parâmetro max_results .
Para filtrar o recurso materializado retornado por um nome de recurso, use o parâmetro opcional feature_name .
FeatureEngineeringClient.list_materialized_features(
feature_name: Optional[str] = None, # Optional feature name to filter by
max_results: int = 100, # Maximum number of features to be returned
) -> List[MaterializedFeature]:
Como excluir um recurso materializado
Para excluir um recurso materializado, use list_materialized_features(). Verifique o atributo table_name , navegue até essa tabela no Unity Catalog e exclua a tabela que contém o recurso. Use a tab Linhagem para identificar qualquer pipeline associado e excluí-lo também. Por fim, certifique-se de que, para tabelas online, o pipeline e a tabela offline também sejam excluídos.
Na versão beta, as APIs de exclusão não são suportadas. Caso necessário, você pode excluir manualmente o pipeline de recursos e as tabelas de recursos por meio da interface do usuário Databricks .
Utilize recurso online em aplicações tempo real
O recurso Feature Serving não é suportado para Engenharia de Recursos Declarativa. Para atender o recurso online, implementei um modelo endpoint específico usando um modelo de logs por meio Unity Catalog.
Os modelos treinados usando recursos do Databricks rastreiam automaticamente a linhagem até o recurso em que foram treinados. Quando implantados como endpoints de modelos de serviço, esses modelos usam Unity Catalog para buscar recursos em lojas online.
implantou um modelo endpoint
Utilize o SDK de Implantações MLflow para criar um endpoint de modelo de serviço para um modelo registrado no Unity Catalog:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
# Create a serving endpoint for a UC model
endpoint = client.create_endpoint(
name="fraud-detection-endpoint",
config={
"served_entities": [
{
"entity_name": "main.ecommerce.fraud_model",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": True,
}
]
},
)
Para obter mais detalhes sobre como configurar o endpoint de modelo de operação personalizado, consulte Criar endpoint de modelo de operação personalizado.
Consultar o endpoint
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
response = client.predict(
endpoint="fraud-detection-endpoint",
inputs={
"dataframe_records": [
{"user_id": "user_123", "transaction_time": "2026-03-01T12:00:00"},
]
},
)
Limitações
- O recurso contínuo não pode ser materializado. Devido à sua alta fidelidade de correção temporal, recursos contínuos para treinamento offline ou inferência de lotes são gerados dinamicamente para cada ponto de dados.
- A exclusão e a pausa de um recurso devem ser gerenciadas manualmente no nível pipeline .