| Entrada | Saída | Alias |
|---|---|---|
| ✔ | ✔ |
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.
| Configuração | Descrição | Padrão |
|---|---|---|
input_format_arrow_allow_missing_columns | Permite colunas ausentes ao ler formatos de entrada Arrow | 1 |
input_format_arrow_case_insensitive_column_matching | Ignora maiúsculas e minúsculas ao corresponder colunas Arrow com colunas CH. | 0 |
input_format_arrow_import_nested | Configuração obsoleta, não faz nada. | 0 |
input_format_arrow_skip_columns_with_unsupported_types_in_schema_inference | Ignora colunas com tipos não suportados durante a inferência de esquema do formato Arrow | 0 |
output_format_arrow_compression_method | Método de compressão do formato de saída Arrow. Codecs compatíveis: lz4_frame, zstd, none (sem compressão) | lz4_frame |
output_format_arrow_date_as_uint16 | Grava valores Date como números simples de 16 bits (lidos de volta como UInt16), em vez de convertê-los para um tipo Arrow DATE32 de 32 bits (lido de volta como Date32). | 0 |
output_format_arrow_fixed_string_as_fixed_byte_array | Usa o tipo Arrow FIXED_SIZE_BINARY em vez de Binary para colunas FixedString. | 1 |
output_format_arrow_low_cardinality_as_dictionary | Habilita a saída do tipo LowCardinality como o tipo Arrow Dicionário | 0 |
output_format_arrow_string_as_string | Usa o tipo Arrow String em vez de Binary para colunas String | 1 |
output_format_arrow_unsupported_types_as_binary | Gera tipos sem conversão como dados binários brutos. Se for false, esses tipos gerarão a exceção UNKNOWN_TYPE. | 1 |
output_format_arrow_use_64_bit_indexes_for_dictionary | Sempre usa inteiros de 64 bits para índices de dicionário no formato Arrow | 0 |
output_format_arrow_use_signed_indexes_for_dictionary | Usa inteiros com sinal para índices de dicionário no formato Arrow | 1 |