Pular para o conteúdo principal

Descrição

ArrowStream é o formato no “modo stream” do Apache Arrow. Ele foi projetado para processamento de streams em memória.

Exemplo de uso

No exemplo abaixo, usamos o conjunto de dados forex, que está disponível no playground SQL do ClickHouse. Você pode se conectar a ele remotamente com clickhouse-client usando o host sql-clickhouse.clickhouse.com e o usuário demo (que não tem senha). A tabela forex está no banco de dados forex, por isso o definimos como banco de dados padrão:
A tabela forex armazena taxas de câmbio. Podemos verificar seu tamanho e o nível de compressão em disco consultando system.columns:
Query
Response
Ao contrário do formato Arrow em “modo de arquivo”, que exige o resultado completo antes de poder ser lido, ArrowStream é entregue como uma sequência de lotes de registros que um consumidor pode ler de forma incremental, à medida que chegam. Isso o torna ideal para transmitir o resultado de uma consulta diretamente para uma ferramenta de visualização ou analytics sem antes materializar todo o dataset. Para transmitir o resultado, envie a consulta pela interface HTTP do ClickHouse com uma requisição POST e leia a resposta como um stream Arrow. Desabilitamos a compactação da saída Arrow por meio da configuração output_format_arrow_compression_method para que os consumidores possam decodificar os lotes diretamente à medida que os recebem. A saída ArrowStream é binária bruta, portanto, em vez de imprimi-la no terminal, nós a redirecionamos para um consumidor. O stream é autodescritivo (carrega seu próprio esquema), então aqui o redirecionamos diretamente para o clickhouse-local, que lê os lotes recebidos com --input-format ArrowStream e faz consultas sobre eles como se fossem uma tabela. A tabela forex é grande, então restringimos a consulta remota com um predicado WHERE e um LIMIT para manter este exemplo pequeno:
Response
O mesmo stream pode ser consumido de forma incremental por qualquer cliente compatível com Arrow, que o lê lote por lote, em vez de fazer a bufferização do resultado completo. Por exemplo, usando a biblioteca Apache Arrow para JavaScript, um RecordBatchReader retorna cada lote de registros assim que ele é transmitido pelo servidor:
Para um passo a passo completo de streaming de dados ArrowStream do ClickHouse para uma visualização em tempo real com Perspective, consulte a postagem do blog Streaming de visualizações em tempo real com ClickHouse, Apache Arrow e Perspective.

Configurações de formato

ArrowStream compartilha as mesmas configurações de formato do formato Arrow.
Última modificação em 1 de julho de 2026