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:Com 4,6 GB e 28 milhões de linhas, este arquivo comprimido deve levar de 5 a 10 minutos para baixar.
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 é o Isso cria uma tabela vazia usando o esquema inferido a partir dos dados.
O comando Para inserir os dados nesta tabela, use o comando Você inseriu 28 milhões de linhas no ClickHouse com um único comando!
clickhouse-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:Embora a inferência de esquema seja uma ótima ferramenta para a exploração inicial dos dados, ela funciona com base no melhor esforço e não substitui, no longo prazo, a definição de um esquema ideal para seus dados.
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 tipo Com um esquema otimizado, agora você pode inserir os dados a partir do sistema de arquivos local.
Novamente com o
DateTime, 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.O ClickHouse está gerando mais ruído ao longo do tempo? Aqui fica evidente a utilidade de definir o campo Parece que o “ClickHouse” está crescendo em popularidade com o tempo.
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:Execute o comando a seguir para ver o esquema inferido:Como no caso do arquivo CSV, você pode especificar o esquema manualmente para ter maior controle sobre os tipos escolhidos e inserir os
dados diretamente do S3:
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:Em seguida, você criará um índice invertido na coluna “comment”
para acelerar esta consulta.
Observe que os comentários em minúsculas serão indexados para encontrar termos independentemente do uso de maiúsculas e minúsculas.Execute os seguintes comandos para criar o índice:A materialização do índice leva algum tempo (para verificar se o índice foi criado, use a tabela do sistema Observe como a consulta agora levou apenas 0,248 segundo com o índice, em comparação com os 0,843 segundo anteriores sem ele:A cláusula Observe como o índice permitiu pular uma quantidade substancial de grânulos
para acelerar a consulta.Agora também é possível pesquisar com eficiência por um ou por vários termos:
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