Pular para o conteúdo
Lucas Lessa
Voltar para as notícias
DatabricksGAImpacto: Médio

Suporte a Apache Arrow Flight no Zerobus Ingest

Envie dados no formato Apache Arrow diretamente para o Zerobus Ingest sem precisar converter cada linha para JSON ou protobuf.

O que mudou

O suporte ao Apache Arrow Flight no Zerobus Ingest agora está disponível de forma geral. Ele permite enviar lotes de registros no formato columnar nativo do Arrow diretamente por gRPC, reduzindo a sobrecarga de serialização e processamento em CPU para aplicações analíticas.### Para que serveImagine que sua aplicação gera DataFrames ou tabelas em memória usando bibliotecas como Pyarrow, Polars ou DataFusion e você precisa ingestar esses dados rapidamente em uma tabela Delta. Dá para:- Enviar blocos de dados em lote (RecordBatch ou Table) em vez de linha por linha.- Reduzir o custo de CPU em esquemas largos e numéricos.- Opcionalmente comprimir os payloads em trânsito com LZ4 ou ZSTD.### Como usarInstale o pacote com suporte a Arrow e abra um stream de ingestão com o SDK em Python ou Rust.Bashpip install "databricks-zerobus-ingest-sdk[arrow]"Python```import pyarrow as pa from zerobus.sdk.sync import ZerobusSdk

SERVER_ENDPOINT = "https://1234567890123456.zerobus.us-west-2.cloud.databricks.com" DATABRICKS_WORKSPACE_URL = "https://dbc-a1b2c3d4-e5f6.cloud.databricks.com" TABLE_NAME = "main.default.air_quality" CLIENT_ID = "your-client-id" CLIENT_SECRET = "your-client-secret"

schema = pa.schema( [ ("device_name", pa.large_utf8()), ("temp", pa.int32()), ("humidity", pa.int64()), ] )

sdk = ZerobusSdk(SERVER_ENDPOINT, DATABRICKS_WORKSPACE_URL) stream = sdk.create_arrow_stream(TABLE_NAME, schema, CLIENT_ID, CLIENT_SECRET)

try: batch = pa.record_batch( { "device_name": ["sensor-1"], "temp": [22], "humidity": [60], }, schema=schema, ) stream.ingest_batch(batch) stream.flush() finally: stream.close()```O que acontece nesse código:

  1. Define o esquema Arrow correspondente à tabela Delta de destino.
  2. Inicializa o SDK do Zerobus apontando para o endpoint e workspace.
  3. Cria um stream de Arrow e envia um lote de registros (RecordBatch).
  4. Confirma a durabilidade com o flush() e encerra o stream.### Limitações e requisitosDisponível em GA. Cada linha individual dentro de um RecordBatch deve respeitar o limite de 10 MB, embora o lote total possa ser maior. Os campos do esquema Arrow devem seguir a mesma ordem relativa, nulabilidade e tipos da tabela Delta de destino.
Ver nota oficial do Databricks

Apache Arrow support for Zerobus Ingest is now generally available

Resumo e explicação gerados por IA a partir da release note oficial. Em caso de dúvida, a documentação oficial da plataforma prevalece.

Relacionadas