Parquet é um formato de arquivo eficiente para armazenar dados de forma colunar.
O ClickHouse oferece suporte tanto para leitura quanto para gravação de arquivos Parquet.
Quando você faz referência a um caminho de arquivo em uma consulta, o local de onde o ClickHouse tentará ler dependerá da variante do ClickHouse que você está usando.Se você estiver usando clickhouse-local, ele lerá de um local relativo a onde você iniciou o ClickHouse Local.
Se você estiver usando ClickHouse Server ou ClickHouse Cloud por meio do clickhouse client, ele lerá de um local relativo ao diretório /var/lib/clickhouse/user_files/ no servidor.
Antes de carregar os dados, podemos usar a função file() para explorar a estrutura de um arquivo Parquet de exemplo:
Usamos Parquet como segundo argumento, para que o ClickHouse saiba qual é o formato do arquivo. Isso exibirá as colunas com os tipos:
Também podemos explorar arquivos antes de realmente importar os dados, aproveitando todo o poder do SQL:
Podemos dispensar a definição explícita do formato para file() e INFILE/OUTFILE.
Nesse caso, o ClickHouse detectará automaticamente o formato com base na extensão do arquivo.
Importando para uma tabela existente
Vamos criar uma tabela na qual importaremos dados Parquet:
Agora podemos importar os dados usando a cláusula FROM INFILE:
Observe que o ClickHouse converteu automaticamente as strings do Parquet (na coluna date) para o tipo Date. Isso acontece porque o ClickHouse faz essa conversão de tipo automaticamente com base nos tipos da tabela de destino.
Inserindo um arquivo local em um servidor remoto
Se você quiser inserir um arquivo Parquet local em um servidor remoto do ClickHouse, pode fazer isso enviando o conteúdo do arquivo por pipe para o clickhouse-client, como mostrado abaixo:
Criando novas tabelas a partir de arquivos Parquet
Como o ClickHouse lê o esquema do arquivo Parquet, podemos criar tabelas dinamicamente:
Isso criará e preencherá automaticamente uma tabela a partir de um arquivo Parquet especificado:
Por padrão, o ClickHouse é rigoroso com nomes de colunas, tipos e valores. Mas, às vezes, é possível ignorar colunas inexistentes ou valores não compatíveis durante a importação. Isso pode ser controlado com as configurações do Parquet.
Ao usar INTO OUTFILE com o ClickHouse Cloud, você precisará executar os comandos no clickhouse client na máquina em que o arquivo será salvo.
Para exportar qualquer tabela ou resultado de consulta para um arquivo Parquet, podemos usar uma cláusula INTO OUTFILE:
Isso criará o arquivo export.parquet no diretório de trabalho.
Tipos de dados do ClickHouse e do Parquet
Os tipos de dados do ClickHouse e do Parquet são, em sua maioria, idênticos, mas ainda apresentam algumas diferenças. Por exemplo, o ClickHouse exporta o tipo DateTime como int64 do Parquet. Se depois importarmos isso de volta para o ClickHouse, veremos números (arquivo time.parquet):
Nesse caso, conversão de tipo pode ser usada:
O ClickHouse oferece suporte a diversos formatos, tanto de texto quanto binários, para atender a vários cenários e plataformas. Explore mais formatos e formas de trabalhar com eles nos artigos a seguir:
E confira também o clickhouse-local — uma ferramenta portátil e completa para trabalhar com arquivos locais/remotos sem precisar de um servidor ClickHouse.