Neste tutorial, você vai inserir 28 milhões de linhas do Hacker News em uma tabela do ClickHouse usando os formatos CSV e Parquet e executar algumas consultas simples para explorar os dados.
CSV
1
Baixar CSV
Uma versão CSV do conjunto de dados pode ser baixada do nosso bucket do S3 público ou com a execução deste comando:2
Faça uma amostragem dos dados
clickhouse-local permite processar arquivos locais rapidamente sem
precisar implantar e configurar o servidor ClickHouse.Antes de armazenar qualquer dado no ClickHouse, vamos fazer uma amostragem do arquivo usando o clickhouse-local.
No console, execute:Query
Response
file permite ler o arquivo a partir de um disco local, especificando apenas o formato CSVWithNames.
O mais importante é que o esquema é inferido automaticamente a partir do conteúdo do arquivo.
Observe também como o clickhouse-local consegue ler o arquivo comprimido, inferindo o formato gzip pela extensão.
O formato Vertical é usado para facilitar a visualização dos dados de cada coluna.3
Carregue os dados com inferência de esquema
A ferramenta mais simples e poderosa para carregar dados é oclickhouse-client: um cliente nativo de linha de comando completo.
Para carregar dados, você pode mais uma vez usar a inferência de esquema, deixando que o ClickHouse determine os tipos das colunas.Execute o comando abaixo para criar uma tabela e inserir os dados diretamente do arquivo CSV remoto, acessando seu conteúdo por meio da função url.
O esquema é inferido automaticamente:DESCRIBE TABLE nos permite entender quais tipos foram atribuídos.Query
Response
INSERT INTO, SELECT.
Com a função url, os dados serão lidos diretamente da URL:4
Explore os dados
Obtenha uma amostra das histórias do Hacker News e de colunas específicas executando a consulta a seguir:Query
Response
5
Defina um esquema
Uma otimização imediata e óbvia é definir um tipo para cada campo. Além de declarar o campo de tempo como do tipoDateTime, definimos um tipo apropriado para cada um dos campos abaixo após remover o conjunto de dados existente.
No ClickHouse, o id da chave primária dos dados é definido por meio da cláusula ORDER BY.Selecionar os tipos apropriados e escolher quais colunas incluir na cláusula ORDER BY
ajudará a melhorar a velocidade das consultas e a compressão.Execute a consulta abaixo para remover o esquema antigo e criar o esquema aprimorado:Query
clickhouse-client, insira o arquivo usando a cláusula INFILE, com um INSERT INTO explícito.Query
6
Executar consultas de exemplo
Algumas consultas de exemplo são apresentadas abaixo para inspirar você a escrever suas próprias consultas.Com que frequência o tema “ClickHouse” aparece no Hacker News?
O campo score fornece uma métrica de popularidade para as histórias, enquanto o campoid e o operador de concatenação ||
podem ser usados para gerar um link para a publicação original.Query
Response
time
como DateTime, pois usar um tipo de dado adequado permite utilizar a função toYYYYMM():Query
Response
Quem são os que mais comentam em artigos relacionados ao ClickHouse?
Query
Response
Quais comentários geram mais interesse?
Query
Response
Parquet
1
Inserir os dados
Execute a consulta a seguir para ler os mesmos dados no formato Parquet, novamente usando a função url para acessar os dados remotos:Chaves nulas com ParquetDevido a uma característica do formato Parquet, temos que aceitar que as chaves podem ser
NULL,
mesmo que não estejam nos dados.Response
2
Adicione um índice de salto para acelerar as consultas
Para descobrir quantos comentários mencionam “ClickHouse”, execute a seguinte consulta:Query
Response
system.data_skipping_indices).Execute a consulta novamente quando o índice tiver sido criado:Query
Response
EXPLAIN pode ser usada para entender por que a adição desse índice
melhorou a consulta em cerca de 3,4x.Response
Query
Response
Query
Response