Quanto tempo leva para exportar dados para o ClickHouse?
| Tabela | Linhas | Arquivos exportados | Tamanho dos dados | Exportação do BigQuery | Tempo de slot | Importação para o ClickHouse |
|---|---|---|---|---|---|---|
| blocks | 16,569,489 | 73 | 14.53GB | 23 s | 37 min | 15.4 s |
| transactions | 1,864,514,414 | 5169 | 957GB | 1 min 38 s | 1 dia 8 h | 18 min 5 s |
| traces | 6,325,819,306 | 17,985 | 2.896TB | 5 min 46 s | 5 dias 19 h | 34 min 55 s |
| contracts | 57,225,837 | 350 | 45.35GB | 16 s | 1 h 51 min | 39.4 s |
| Total | 8.26 bilhões | 23,577 | 3.982TB | 8 min 3 s | > 6 dias 5 h | 53 min 45 s |
Exportar dados da tabela para o GCS
Nesta etapa, usamos o espaço de trabalho SQL do BigQuery para executar nossos comandos SQL. Abaixo, exportamos uma tabela do BigQuery chamadamytable para um bucket do GCS usando a instrução EXPORT DATA.* no parâmetro uri. Isso garante que a saída seja dividida em vários arquivos, com um sufixo numérico crescente, caso a exportação exceda 1 GB de dados.Essa abordagem tem várias vantagens:- O Google permite exportar até 50 TB por dia para o GCS sem custo. Os usuários pagam apenas pelo armazenamento no GCS.
- As exportações geram vários arquivos automaticamente, limitando cada um a no máximo 1 GB de dados da tabela. Isso é vantajoso para o ClickHouse, pois permite paralelizar as importações.
- O Parquet, por ser um formato orientado a colunas, é uma opção melhor para intercâmbio de dados, já que é compactado por natureza e mais rápido para o BigQuery exportar e para o ClickHouse consultar
Importando dados do GCS para o ClickHouse
Quando a exportação for concluída, podemos importar esses dados para uma tabela no ClickHouse. Você pode usar o Console SQL do ClickHouse ou oclickhouse-client para executar os comandos abaixo.Primeiro, você deve criar sua tabela no ClickHouse:parallel_distributed_insert_select se houver várias réplicas do ClickHouse no cluster, para acelerar o processo de exportação. Se houver apenas um nó do ClickHouse, você pode pular esta etapa:INSERT INTO SELECT, que insere dados em uma tabela com base nos resultados de uma consulta SELECT.Para obter os dados para o INSERT, podemos usar a função s3Cluster para buscar dados do nosso bucket do GCS, já que o GCS é interoperável com o Amazon S3. Se você tiver apenas um nó do ClickHouse, poderá usar a função de tabela s3 em vez da função s3Cluster.ACCESS_ID e o SECRET usados na consulta acima correspondem à sua chave HMAC associada ao seu GCS bucket.Use
ifNull ao exportar colunas anuláveisNa consulta acima, usamos a função ifNull com a coluna some_text para inserir dados na nossa tabela no ClickHouse com um valor padrão. Você também pode definir suas colunas no ClickHouse como Nullable, mas isso não é recomendado, pois pode afetar negativamente o desempenho.Como alternativa, você pode usar SET input_format_null_as_default=1, e todos os valores ausentes ou NULL serão substituídos pelos valores padrão de suas respectivas colunas, se esses padrões estiverem especificados.Testando se a exportação de dados foi bem-sucedida
Para testar se seus dados foram inseridos corretamente, basta executar uma consultaSELECT na sua nova tabela: