Pular para o conteúdo principal

Use tabelas on-line para o tempo real Feature Serving

info

Visualização

As tabelas online estão em pré-visualização pública nas seguintes regiões: us-east-1, us-west-2, eu-west-1, ap-southeast-1, ap-southeast-2. Para obter informações sobre preços, consulte Tabelas on-line de preços.

Uma tabela on-line é uma cópia somente leitura de uma tabela Delta que é armazenada em um formato orientado por linha otimizado para acesso on-line. As tabelas on-line são totalmente serverless que escalonam automaticamente a capacidade da taxa de transferência com a carga da solicitação e fornecem baixa latência e alto acesso aos dados de qualquer escala. As tabelas on-line são projetadas para funcionar com os aplicativos Mosaic AI Model Serving, Feature Serving e retrieval-augmented generation (RAG), onde são usadas para pesquisas rápidas de dados.

O senhor também pode usar tabelas on-line em consultas usando a lakehouse Federation. Ao usar a Lakehouse Federation, o senhor deve usar um SQL warehouse sem servidor para acessar as tabelas on-line. Somente operações de leitura (SELECT) são suportadas. Esse recurso destina-se apenas a fins interativos ou de depuração e não deve ser usado para cargas de trabalho de produção ou de missão crítica.

A criação de uma tabela on-line usando a interface do usuário do Databricks é um processo de uma etapa. Basta selecionar a tabela Delta no Catalog Explorer e selecionar Create online table (Criar tabela on-line ). O senhor também pode usar a API REST ou o SDK da Databricks para criar e gerenciar tabelas on-line. Consulte Trabalhar com tabelas on-line usando APIs.

Requisitos

  • O site workspace deve estar habilitado para Unity Catalog. Siga a documentação para criar um Unity Catalog Metastore, habilitá-lo em um workspace e criar um catálogo.
  • Um modelo deve ser registrado no Unity Catalog para acessar as tabelas on-line.
  • Um administrador do Databricks deve aceitar os Termos de serviço sem servidor no console do account.

Trabalhe com tabelas on-line usando a interface

Esta seção descreve como criar e excluir tabelas on-line e como verificar o status e acionar atualizações de tabelas on-line.

Crie uma tabela on-line usando a interface do usuário

Você cria uma tabela on-line usando o Catalog Explorer. Para obter informações sobre as permissões necessárias, consulte Permissões do usuário.

  1. Para criar uma tabela on-line, a tabela de origem Delta deve ter uma tabela primária key. Se a tabela Delta que o senhor deseja usar não tiver uma key primária, crie uma seguindo estas instruções: Use uma tabela Delta existente em Unity Catalog como uma tabela de recurso.

  2. No Catalog Explorer, navegue até a tabela de origem que você deseja sincronizar com uma tabela online. No menu Criar , selecione Tabela online .

    selecione criar tabela online

  3. Use os seletores na caixa de diálogo para configurar a tabela on-line.

    caixa de diálogo de configuração de tabela on-line

    Name (Nome ): Nome a ser usado para a tabela on-line no Unity Catalog.

    Chave primária : Coluna(s) na tabela de origem a ser(em) usada(s) como primária(s) key na tabela on-line.

    Chave de série temporal : (opcional). Coluna na tabela de origem a ser usada como série temporal key. Quando especificada, a tabela on-line inclui apenas a linha com o valor mais recente da série temporal key para cada primário key.

    Modo de sincronização : Especifica como o pipeline de sincronização atualiza a tabela on-line. Selecione uma das opções Snapshot , Triggered ou Continuous .

    Política

    Descrição

    Snapshot

    A pipeline execução uma vez para tirar um Snapshot da tabela de origem e copiá-lo para a tabela on-line. As alterações subsequentes na tabela de origem são refletidas automaticamente na tabela on-line, tirando um novo Snapshot da origem e criando uma nova cópia. O conteúdo da tabela on-line é atualizado atomicamente.

    Acionado

    O pipeline executa uma vez para criar uma cópia inicial do Snapshot da tabela de origem na tabela on-line. Diferentemente do modo de sincronização Snapshot, quando a tabela on-line é atualizada, somente as alterações desde a última execução do pipeline são recuperadas e aplicadas à tabela on-line. O incremental refresh pode ser acionado manualmente ou automaticamente de acordo com um programa.

    Contínuo

    O pipeline executa continuamente. As alterações subsequentes na tabela de origem são aplicadas de forma incremental à tabela on-line no modo de transmissão em tempo real. Não é necessário acessar o site refresh manualmente.

nota

Para oferecer suporte ao modo de sincronização acionada ou contínua , a tabela de origem deve ter a opção Alterar feed de dados ativada.

  1. Quando terminar, clique em Confirmar . A página da tabela on-line é exibida.
  2. A nova tabela on-line é criada sob o catálogo, o esquema e o nome especificados na caixa de diálogo de criação. No Catalog Explorer, a tabela on-line é indicada por ícone de mesa online.

Obtenha status e acione atualizações usando a interface do usuário

Para verificar o status da tabela on-line, clique no nome da tabela no Catálogo para abri-la. A página da tabela on-line é exibida com a Visão geral tab aberta. A seção Ingestão de dados mostra o status da atualização mais recente. Para acionar uma atualização, clique em Sincronizar agora . A seção Data Ingest também inclui um link para o pipeline DLT que atualiza a tabela.

view da página da tabela on-line no catálogo

programar atualizações periódicas

Para tabelas on-line com modo de sincronização Snapshot ou Triggered , o senhor pode programar atualizações periódicas automáticas. O programa de atualização é gerenciado pelo DLT pipeline que atualiza a tabela.

  1. No Catalog Explorer, navegue até a tabela on-line.
  2. Na seção Data Ingest (Ingestão de dados ), clique no link para o pipeline.
  3. No canto superior direito, clique em programar e adicione um novo programar ou atualize o programar existente.

Excluir uma tabela on-line usando a interface

Na página da tabela on-line, selecione Excluir no menu Menu Kebab kebab.

Trabalhar com tabelas on-line usando APIs

O senhor também pode usar o SDK da Databricks ou a API REST para criar e gerenciar tabelas on-line.

Para obter informações de referência, consulte a documentação de referência do site Databricks SDK para Python ou do site REST API.

Requisitos

Databricks SDK versão 0.20 ou acima.

Criar uma tabela on-line usando APIs

Python
from pprint import pprint
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import *

w = WorkspaceClient(host='https://xxx.databricks.com', token='xxx')

# Create an online table
spec = OnlineTableSpec(
primary_key_columns=["pk_col"],
source_table_full_name="main.default.source_table",
run_triggered=OnlineTableSpecTriggeredSchedulingPolicy.from_dict({'triggered': 'true'})
)

online_table = OnlineTable(
name="main.default.my_online_table", # Fully qualified table name
spec=spec # Online table specification
)

w.online_tables.create_and_wait(table=online_table)

A tabela on-line começa a ser sincronizada automaticamente após ser criada.

Obtenha o status e acione refresh usando APIs

O senhor pode acessar view o status e a especificação da tabela on-line seguindo o exemplo abaixo. Se a tabela on-line não for contínua e o senhor quiser acionar um refresh manual dos dados, poderá usar o pipeline API para fazer isso.

Use o ID pipeline associado à tabela on-line na especificação da tabela on-line e comece uma nova atualização no pipeline para acionar o refresh. Isso equivale a clicar em Sincronizar agora na interface de usuário da tabela on-line no Catalog Explorer.

Python
pprint(w.online_tables.get('main.default.my_online_table'))

# Sample response
OnlineTable(name='main.default.my_online_table',
spec=OnlineTableSpec(perform_full_copy=None,
pipeline_id='some-pipeline-id',
primary_key_columns=['pk_col'],
run_continuously=None,
run_triggered={},
source_table_full_name='main.default.source_table',
timeseries_key=None),
status=OnlineTableStatus(continuous_update_status=None,
detailed_state=OnlineTableState.PROVISIONING,
failed_status=None,
message='Online Table creation is '
'pending. Check latest status in '
'DLT: '
'https://xxx.databricks.com/pipelines/some-pipeline-id',
provisioning_status=None,
triggered_update_status=None))

# Trigger an online table refresh by calling the pipeline API. To discard all existing data
# in the online table before refreshing, set "full_refresh" to "True". This is useful if your
# online table sync is stuck due to, for example, the source table being deleted and recreated
# with the same name while the sync was running.
w.pipelines.start_update(pipeline_id='some-pipeline-id', full_refresh=True)

Excluir uma tabela on-line usando APIs

Python
w.online_tables.delete('main.default.my_online_table')

A exclusão da tabela on-line interrompe qualquer sincronização de dados em andamento e libera todos os seus recursos.

Servir mesa on-line uso de dados a Feature Serving endpoint

Para modelos e aplicativos hospedados fora do site Databricks, o senhor pode criar um Feature Serving endpoint para atender a recursos de tabelas on-line. O endpoint disponibiliza o recurso em baixa latência usando um REST API.

  1. Criar uma especificação de recurso.

    Ao criar uma especificação de recurso, o senhor especifica a tabela Delta de origem. Isso permite que a especificação de recurso seja usada em cenários off-line e on-line. Para pesquisas on-line, o servidor endpoint usa automaticamente a tabela on-line para realizar pesquisas de recurso de baixa latência.

    A tabela de origem Delta e a tabela on-line devem usar o mesmo primário key.

    A especificação do recurso pode ser visualizada em Function tab no Catalog Explorer.

    Python
    from databricks.feature_engineering import FeatureEngineeringClient, FeatureLookup

    fe = FeatureEngineeringClient()
    fe.create_feature_spec(
    name="catalog.default.user_preferences_spec",
    features=[
    FeatureLookup(
    table_name="user_preferences",
    lookup_key="user_id"
    )
    ]
    )
  2. Crie um Feature Serving endpoint.

    Esta etapa pressupõe que o senhor tenha criado uma tabela on-line chamada user_preferences_online_table que sincroniza os dados da tabela Delta user_preferences. Use a especificação de recurso para criar um Feature Serving endpoint. O endpoint disponibiliza os dados por meio de uma API REST usando a tabela on-line associada.

nota

O usuário que realiza essas operações deve ser o proprietário da tabela off-line e da tabela on-line.

Python
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput

workspace = WorkspaceClient()

# Create endpoint
endpoint_name = "fse-location"

workspace.serving_endpoints.create_and_wait(
name=endpoint_name,
config=EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
entity_name=feature_spec_name,
scale_to_zero_enabled=True,
workload_size="Small"
)
]
)
)
  1. Obtenha dados do site Feature Serving endpoint.

    Para acessar o endpoint da API, envie uma solicitação HTTP GET para o URL do endpoint. O exemplo mostra como fazer isso usando as APIs do Python. Para outras linguagens e ferramentas, consulte Feature Serving.

    Python
    # Set up credentials
    export DATABRICKS_TOKEN=...
    Python
    url = "https://{workspace_url}/serving-endpoints/user-preferences/invocations"

    headers = {'Authorization': f'Bearer {DATABRICKS_TOKEN}', 'Content-Type': 'application/json'}

    data = {
    "dataframe_records": [{"user_id": user_id}]
    }
    data_json = json.dumps(data, allow_nan=True)

    response = requests.request(method='POST', headers=headers, url=url, data=data_json)
    if response.status_code != 200:
    raise Exception(f'Request failed with status {response.status_code}, {response.text}')

    print(response.json()['outputs'][0]['hotel_preference'])

Use tabelas on-line com aplicativos RAG

Os aplicativos RAG são um caso de uso comum para tabelas on-line. O senhor cria uma tabela on-line para os dados estruturados de que o aplicativo RAG precisa e a hospeda em um site Feature Serving endpoint. O aplicativo RAG usa o site Feature Serving endpoint para procurar dados relevantes na tabela on-line.

As etapas típicas são as seguintes:

  1. Crie um Feature Serving endpoint.
  2. Crie uma ferramenta usando o LangChain ou qualquer pacote semelhante que use o endpoint para procurar dados relevantes.
  3. Use a ferramenta em um agente LangChain ou em um agente semelhante para recuperar dados relevantes.
  4. Crie um modelo de serviço endpoint para hospedar o aplicativo.

Para obter instruções passo a passo e um exemplo de Notebook, consulte exemplo de recurso engenharia: aplicativo RAG estruturado.

Notebook exemplos

O Notebook a seguir ilustra como publicar o recurso em tabelas on-line para o tempo real de atendimento e pesquisa automática de recurso.

Demonstração de tabelas on-line Notebook

Open notebook in new tab

Usar tabelas on-line com o Mosaic AI Model Serving

O senhor pode usar tabelas on-line para procurar o recurso para Mosaic AI Model Serving. Quando o senhor sincroniza uma tabela de recurso com uma tabela on-line, os modelos treinados usando recurso dessa tabela de recurso procuram automaticamente os valores de recurso da tabela on-line durante a inferência. Nenhuma configuração adicional é necessária.

  1. Use um FeatureLookup para treinar o modelo.

    Para o treinamento de modelos, use o recurso da tabela de recursos off-line no conjunto de treinamento de modelos, conforme mostrado no exemplo a seguir:

    Python
    training_set = fe.create_training_set(
    df=id_rt_feature_labels,
    label='quality',
    feature_lookups=[
    FeatureLookup(
    table_name="user_preferences",
    lookup_key="user_id"
    )
    ],
    exclude_columns=['user_id'],
    )
  2. Servir o modelo com o Mosaic AI Model Serving. O modelo procura automaticamente o recurso na tabela on-line. Para obter detalhes, consulte Pesquisa automática de recurso com Databricks servindo modelo.

Permissões de usuário

Você deve ter as seguintes permissões para criar uma tabela on-line:

  • SELECT privilégio na tabela de origem.
  • USE_CATALOG privilégio no catálogo de destino.
  • USE_SCHEMA e privilégio CREATE_TABLE no esquema de destino.

Para gerenciar o pipeline de sincronização de dados de uma tabela on-line, o senhor deve ser o proprietário da tabela on-line ou ter o privilégio REFRESH na tabela on-line. Os usuários que não têm os privilégios USE_CATALOG e USE_SCHEMA no catálogo não verão a tabela on-line no Catalog Explorer.

O metastore do Unity Catalog deve ter a versão 1.0 do Privilege Model.

Modelo de permissão de endpoint

Uma entidade de serviço exclusiva é criada automaticamente para um Feature Serving ou modelo de serviço endpoint com permissões limitadas necessárias para consultar dados de tabelas on-line. Essa entidade de serviço permite que o endpoint acesse os dados independentemente do usuário que criou o recurso e garante que o endpoint possa continuar a funcionar se o criador deixar o workspace.

A vida útil desta entidade de serviço é a vida útil do site endpoint. Os logs de auditoria podem indicar registros gerados pelo sistema para o proprietário do catálogo do Unity Catalog que concede os privilégios necessários a essa entidade de serviço.

Limitações

  • Somente uma tabela on-line é suportada por tabela de origem.
  • Uma tabela on-line e sua tabela de origem podem ter no máximo 1000 colunas.
  • As colunas dos tipos de dados ARRAY, MAP ou STRUCT não podem ser usadas como chave primária na tabela on-line.
  • Se uma coluna for usada como primária key na tabela on-line, todas as linhas da tabela de origem em que a coluna contém valores nulos serão ignoradas.
  • Tabelas externas, do sistema e internas não são suportadas como tabelas de origem.
  • As tabelas de origem sem o feed de dados de alterações Delta ativado suportam apenas o modo de sincronização Snapshot .
  • Delta Sharing são compatíveis apenas com o modo Snapshot modo de sincronização.
  • Os nomes de catálogo, esquema e tabela da tabela on-line só podem conter caracteres alfanuméricos e sublinhados, e não devem começar com números. Traços (-) não são permitidos.
  • As colunas do tipo strings são limitadas a 64 KB de comprimento.
  • Os nomes das colunas são limitados a 64 caracteres.
  • O tamanho máximo da linha é de 2 MB.
  • O tamanho combinado de todas as tabelas on-line em um metastore do Unity Catalog durante a visualização pública é de 2 TB de dados de usuário não compactados.
  • O máximo de consultas por segundo (QPS) é 12.000. Entre em contato com a equipe do Databricks account para aumentar o limite.

Solução de problemas

Não vejo a opção Criar tabela on-line

A causa geralmente é que a tabela da qual você está tentando sincronizar (a tabela de origem) não é um tipo compatível. Certifique-se de que o Securable Kind da tabela de origem (mostrado em Catalog Explorer Details tab) seja uma das opções compatíveis abaixo:

  • TABLE_EXTERNAL
  • TABLE_DELTA
  • TABLE_DELTA_EXTERNAL
  • TABLE_DELTASHARING
  • TABLE_DELTASHARING_MUTABLE
  • TABLE_STREAMING_LIVE_TABLE
  • TABLE_STANDARD
  • TABLE_FEATURE_STORE
  • TABLE_FEATURE_STORE_EXTERNAL
  • TABLE_VIEW
  • TABLE_VIEW_DELTASHARING
  • TABLE_MATERIALIZED_VIEW

Não consigo selecionar os modos de sincronização acionada ou contínua ao criar uma tabela on-line

Isso acontece se a tabela de origem não tiver o feed de dados de alteração Delta ativado ou se for uma visualização ou materializada view. Para usar o modo de sincronização Incremental , ative o feed de dados de alteração na tabela de origem ou use uma tabela que não sejaview.

A atualização da tabela online falha ou o status é exibido offline

Para começar a solucionar esse erro, clique no ID pipeline que aparece na Visão geral tab da tabela on-line no Catalog Explorer.

tabelas on-line falha no pipeline

Na página da interface do usuário do pipeline que aparece, clique na entrada que diz "Failed to resolve flow '__online_table".

mensagem de erro do pipeline de tabelas on-line

Um pop-up aparece com detalhes na seção Detalhes do erro .

tabelas on-line: detalhes do erro

As causas comuns de erros incluem o seguinte:

  • A tabela de origem foi excluída ou excluída e recriada com o mesmo nome, enquanto a tabela on-line estava sendo sincronizada. Isso é particularmente comum com tabelas on-line contínuas, porque elas estão constantemente sincronizadas.

  • A tabela de origem não pode ser acessada por meio da computação sem servidor devido às configurações de firewall. Nessa situação, a seção Detalhes do erro pode mostrar a mensagem de erro "Failed to começar the DLT serviço on clustering xxx...".

  • O tamanho agregado das tabelas on-line excede o limite de 2 TB (tamanho não comprimido) em toda a metástore. O limite de 2 TB refere-se ao tamanho não compactado após a expansão da tabela Delta em formato orientado por linha. O tamanho da tabela no formato de linha pode ser significativamente maior do que o tamanho da tabela Delta mostrada no Catalog Explorer, que se refere ao tamanho compactado da tabela em um formato orientado por coluna. A diferença pode chegar a 100x, dependendo do conteúdo da tabela.

    Para estimar o tamanho não compactado e expandido por linha de uma tabela Delta, use a seguinte consulta de um warehouse SQL sem servidor. A consulta retorna o tamanho estimado da tabela expandida em bytes. A execução bem-sucedida dessa consulta também confirma que a computação sem servidor pode acessar a tabela de origem.

    SQL
    SELECT sum(length(to_csv(struct(*)))) FROM `source_table`;