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 dadosforex, 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:
forex armazena taxas de câmbio. Podemos verificar seu tamanho e
o nível de compressão em disco consultando system.columns:
Query
Response
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
RecordBatchReader retorna cada lote de registros assim que ele é transmitido pelo
servidor:
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.