Como converter arquivos CSV e de registro em um formato colunar
Formatos colunares, como Apache Parquet, oferecem grande economia de compactação e são muito mais fáceis de digitalizar, processar e analisar do que outros formatos, como CSV. Neste artigo, mostramos como converter seus dados CSV em Parquet usando o AWS Glue.
O que é um formato colunar?
Arquivos CSV, arquivos de log e qualquer outro arquivo delimitado por caracteres, todos efetivamente armazenam dados em colunas. Cada linha de dados possui um certo número de colunas, todas separadas pelo delimitador, como vírgulas ou espaços. Mas, por baixo do capô, esses formatos ainda são apenas linhas de cordas. Não há maneira fácil de verificar apenas uma coluna de um arquivo CSV.
Isso pode ser um problema com serviços como AWS Athena, que são capazes de executar consultas SQL em dados armazenados em CSV e outros arquivos delimitados. Mesmo que você esteja apenas consultando uma única coluna, o Athena precisa verificar todo o conteúdo do arquivo. A única cobrança de Athena é o GB dos dados processados, portanto, aumentar a conta processando dados desnecessários não é a melhor ideia.
A solução é um verdadeiro formato colunar. Os formatos colunares armazenam dados em colunas, como um banco de dados relacional tradicional. As colunas são armazenadas juntas e os dados são muito mais homogêneos, o que os torna mais fáceis de compactar. Eles não são exatamente legíveis por humanos, mas são compreendidos pelo aplicativo que os processa perfeitamente. Na verdade, como há menos dados para verificar, eles são muito mais fáceis de processar.
Como o Athena só precisa escanear uma coluna para fazer uma seleção por coluna, ele reduz drasticamente os custos, especialmente para conjuntos de dados maiores. Se você tiver 10 colunas em cada arquivo e digitalizar apenas uma, isso significa uma economia de 90% com a mudança para o Parquet.
Converter automaticamente usando AWS Glue
AWS Glue é uma ferramenta da Amazon que converte conjuntos de dados entre formatos. Ele é usado principalmente como parte de um pipeline para processar dados armazenados em formatos delimitados e outros, e os injeta em bancos de dados para uso no Athena. Embora possa ser configurado para ser automático, você também pode executá-lo manualmente e, com alguns ajustes, pode ser usado para converter arquivos CSV para o formato Parquet.
Vá para o AWS Glue Console e selecione “ Primeiros passos ”. Na barra lateral, clique em “ Adicionar rastreador ” e criar um novo rastreador. O rastreador é configurado para procurar dados de S3 Buckets e importar os dados para um banco de dados para uso na conversão.
Dê um nome ao seu rastreador e opte por importar dados de um armazenamento de dados. Selecione S3 (embora DynamoDB seja outra opção) e insira o caminho para uma pasta que contém seus arquivos. Se você tiver apenas um arquivo que deseja converter, coloque-o em sua própria pasta.
Em seguida, você deverá criar uma função IAM para o seu rastreador operar. Crie a função e escolha-a na lista. Pode ser necessário clicar no botão Atualizar ao lado dele para que apareça.
Escolha um banco de dados para o rastreador enviar; se você já usou o Athena antes, pode usar seu banco de dados personalizado, mas se não o padrão deve funcionar bem.
Se quiser automatizar o processo, você pode programar seu rastreador para que ele seja executado regularmente. Caso contrário, escolha o modo manual e execute-o você mesmo no console.
Depois de criado, vá em frente e execute o rastreador para importar os dados para o banco de dados que você escolheu. Se tudo funcionar, você deverá ver o arquivo importado com o esquema adequado. Os tipos de dados para cada coluna são atribuídos automaticamente com base na entrada de origem.
Assim que seus dados estiverem no sistema AWS, você pode convertê-los. No console do Glue, mude para a seção “ Trabalhos ” guia e crie um novo trabalho. Dê a ele um nome, adicione sua função IAM e selecione “ Um script proposto gerado por AWS Glue ” como o trabalho é executado.
Selecione sua tabela na próxima tela e escolha “ Alterar esquema ” para especificar que este trabalho executa uma conversão.
Em seguida, você deve selecionar “ Criar tabelas no seu destino de dados ”, especificar Parquet como o formato e inserir um novo caminho de destino. Certifique-se de que este seja um local vazio, sem nenhum outro arquivo.
A seguir, você pode editar o esquema do seu arquivo. O padrão é um mapeamento um-para-um de colunas CSV para colunas Parquet, que é provavelmente o que você deseja, mas você pode modificá-lo se precisar.
Crie o trabalho e você será levado a uma página que permite editar o script Python que ele executa. O script padrão deve funcionar bem, então clique em “ Salvar ” e volte para a guia jobs.
Em nosso teste, o script sempre falhou, a menos que a função IAM recebesse permissão específica para gravar no local para o qual especificamos a saída. Você pode ter que editar manualmente as permissões do console de gerenciamento IAM se você tiver o mesmo problema.
Caso contrário, clique em “ Executar ” e seu script deve iniciar. O processamento pode demorar um ou dois minutos, mas você deverá ver o status no painel de informações. Quando terminar, você verá um novo arquivo criado no S3.
Este trabalho pode ser configurado para ser executado a partir de gatilhos definidos pelo rastreador que importa os dados, de modo que todo o processo possa ser automatizado do início ao fim. Se você estiver importando logs do servidor para o S3 dessa forma, este pode ser um método fácil de convertê-los para um formato mais utilizável.
Via: How to Geek
Nenhum comentário