Descrição
ArrowStream é o formato no “modo stream” do Apache Arrow. Ele foi projetado para processamento de streams em memória.
Exemplo de uso
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:
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.