Skip to main content

Ingestão de arquivos Parquet de um bucket do S3

Abaixo estão alguns conceitos básicos de como usar o mecanismo de tabela S3 para ler arquivos Parquet.
  • crie chaves de acesso e secretas para um usuário de serviço do IAM. usuários comuns de login geralmente não funcionam, pois podem estar configurados com uma política de MFA.
  • defina as permissões da política para permitir que o usuário de serviço acesse o bucket e as pastas.
A seguir, há um exemplo bem simples que você pode usar para testar se o acesso aos seus arquivos Parquet está funcionando corretamente antes de aplicar isso aos seus dados reais. Se você precisar de um exemplo de como criar um usuário e um bucket, pode seguir as duas primeiras seções (criar usuário e criar bucket): Integrando o S3 com o ClickHouse Usei este arquivo de exemplo: https://github.com/Teradata/kylo/tree/master/samples/sample-data/parquet e o enviei para meu bucket de teste Você pode definir a política do bucket mais ou menos assim: (ajuste conforme necessário; esta está relativamente aberta em termos de privilégios, mas ajudará nos testes. você pode restringir as permissões conforme necessário)
É possível executar consultas com esse tipo de sintaxe usando o mecanismo de tabela S3: https://clickhouse.com/docs/sql-reference/table-functions/s3/
A referência de tipos de dados para o formato Parquet está aqui: https://clickhouse.com/docs/interfaces/formats/#data-format-parquet Para importar os dados para uma tabela nativa do ClickHouse: crie a tabela, algo assim (escolhi apenas algumas das colunas do arquivo Parquet):
Selecione os dados do bucket do S3 para inseri-los na nova tabela:
Verifique a importação:
Quando você estiver pronto para importar seus dados reais, poderá usar uma sintaxe especial, como curingas e intervalos, para especificar suas pastas, subpastas e arquivos no bucket. Recomendo filtrar alguns diretórios e arquivos para testar a importação primeiro — por exemplo, um determinado ano, alguns meses e um intervalo de datas. além das opções de caminho aqui, a sintaxe ** foi adicionada recentemente e especifica todos os subdiretórios de forma recursiva. https://clickhouse.com/docs/sql-reference/table-functions/s3/ Por exemplo, supondo que os paths e a estrutura do bucket sejam algo assim: https://your_s3_bucket.s3.amazonaws.com/<your_folder>/<year>/<month>/<day>/<filename>.parquet https://mars-doc-test.s3.amazonaws.com/system_logs/2022/11/01/my-app-logs-0001.parquet Isso retornaria todos os arquivos do 1º dia de cada mês em 2021-2022 https://mars-doc-test.s3.amazonaws.com/system_logs/{2021-2022}/**/01/*.parquet
Última modificação em 23 de julho de 2026