Entre para a LISTA VIP da Black Friday

00

DIAS

00

HORAS

00

MIN

00

SEG

Clique para saber mais
Alura > Cursos de Data Science > Cursos de Engenharia de Dados > Conteúdos de Engenharia de Dados > Primeiras aulas do curso Databricks: trabalhando com diversos formatos e tipos de arquivos

Databricks: trabalhando com diversos formatos e tipos de arquivos

Conhecendo o DBFS e dbutils - Apresentação

Olá! Meu nome é Bruno Raphaell e vou te acompanhar neste curso!

Autodescrição: Sou um homem negro, de cabelos curtos e cacheados na cor preta, e barba e bigode também pretos. Uso um óculos de grau de armação arredondada na cor preta e visto uma camiseta preta com o símbolo de Data Science na cor verde. Ao meu fundo, uma parede na cor azul com um guarda-roupa e uma estante de livros.

Nesta jornada, conheceremos diferentes formatos e tipos de arquivos que são importantes no contexto de big data na plataforma de Databricks. Para isso, usaremos um arquivo referente à pesquisa nacional de saneamento básico, ou PNSB.

Os formatos de arquivo com os quais trabalharemos são JSON, CSV, TXT, AVRO, PARQUET e ORC. Passaremos, ainda, por conceitos e aplicações de técnicas de particionamento, compressão e descompressão, além de comandos referentes à API do PySpark.

Através deste curso, você poderá decidir qual o melhor formato de arquivo de acordo com sua necessidade e aplicação. Para que você possa melhor aproveitá-lo, é importante ter algum conhecimento prévio sobre a plataforma Databricks.

Vamos nessa? Te vejo nos próximos vídeos!

Conhecendo o DBFS e dbutils - Entendendo o problema

Durante nossa vida, seja ela pessoal ou profissional, nos deparamos com diversos arquivos, como textos, imagens, documentos, entre muitos outros.

Para cada tipo de arquivo, existem diversos formatos. Uma imagem, por exemplo, pode ter formato JPEG, TIFF, PNG etc, sendo que o profissional que trabalha com imagem precisa definir o melhor formato para seu projeto.

Na área de dados seguimos o mesmo princípio, portanto, um profissional que está trabalhando em um projeto de engenharia de dados, por exemplo, precisa analisar algumas das seguintes características:

Por isso é necessário termos entendimentos sobre as vantagens e desvantagens que cada formato de arquivo oferece, assim podemos adequar à necessidade do nosso projeto.

O formato de arquivo define o tipo de gravação e o tipo de dado que estará presente nele. Dependendo do formato escolhido, diferentes formas de gravação serão feitas e cada uma delas possui pontos positivos e negativos.

Se queremos, por exemplo, que a pessoa para quem enviaremos o arquivo tenha uma fácil leitura, o formato TXT é uma boa opção. Porém, a segurança ficaria comprometida, já que se compartilharmos uma senha, por exemplo, este formato já não é tão adequado.

Em contrapartida, os arquivos binários possuem uma maior segurança, já que para ser lido é necessário uma decodificação prévia, o que significa que não podemos abri-lo em qualquer lugar. Este formato comprime com mais facilidade, ocupa menos espaço, favorece o armazenamento de áudio, vídeo e dados gráficos, e, como já citado, oferece mais segurança.

Mas quais os formatos de arquivo mais utilizados no contexto de big data, mais precisamente na plataforma de Databricks?

Com relação aos dados estruturados, podemos ter diversos formatos, sendo os mais comuns CSV, JSON, AVRO, ORC e PARQUET. No que diz respeito ao armazenamento, a principal divisão está entre linhas e colunas, sendo CSV, JSON e AVRO baseado em linhas, e ORC e PARQUET baseado em coluna.

Devido a essa diferença, há vantagens e desvantagens na utilização de cada formato de armazenamento, então precisamos considerar alguns pontos na hora de escolher:

Caso a intenção seja fazer gravação, ou seja, salvar os dados de maneira otimizada, os formatos de arquivo com armazenamento em linhas são mais indicados. Se o objetivo, porém, é fazer consultas e leituras dos arquivos, os formatos baseados em colunas são mais apropriados.

Outra característica que devemos observar ao escolher o formato de arquivo com o qual vamos trabalhar, é relacionado ao seu paralelismo, que é basicamente dividir os dados em diversas partições para, então, o processamento ser realizado de forma paralela. Esse paralelismo permite que executemos o processamento de maneira otimizada.

Arquivos como CSV e JSON possuem grande dificuldade de realizar o processamento, então requerem um maior poder computacional para que seja feita a partição dos dados e o processamento paralelo. Já os arquivos no formato PARQUET possum um particionamento mais otimizado.

Quando se trabalha com sistema de arquivos distribuídos, como é o caso do Spark, e se utiliza arquitetura HDFS, é primordial que os arquivos possam ser particionados, pois assim o processamento paralelo é realizado. Quanto mais fácil seu arquivo puder ser dividido, mais otimizado será o seu processamento dentro da plataforma Databricks, já que utiliza o Spark como ferramenta principal.

Agora que entendemos que existem diferentes formatos de arquivos com diversas características, entenderemos como a plataforma Databricks, baseada na WEB, lida com esses dados!

Conhecendo o DBFS e dbutils - Apresentando o DBFS e dbutils

Agora, veremos como o Databricks trabalha com nossos arquivos!

Nossos arquivos serão armazenados em DBFS, sigla para Databricks File System, um sistema se arquivo distribuído presente no workspace que está disponível no cluster que criaremos em breve.

O databricks permite a interação com outros tipos de armazenamento de objetos como, por exemplo, o S3 da AWS. A grande vantagem é que não será necessário decorar comandos específicos da API de cada nuvem, pois podemos utilizar a escrita de diretórios semelhante ao que usaríamos, por exemplo, no Linux. Com o DB8, que veremos logo mais, será possível trabalhar como se tivéssemos trabalhando diretamente em nosso computador, através de comandos simples.

O arquivos que utilizaremos durante este curso é a Pesquisa Nacional de Saneamento Básico, que contém dados coletados de 5564 municípios do Brasil no ano de 2008. Não vamos nos ater tanto a esses dados, pois não faremos análises exploratórias, construção de modelos de machine learning ou realização de consultas. Nosso objetivo é fazer transformações de um formato para outro, analisando suas características.

Para fazer a importação dos nossos dados, o primeiro passo é criar o cluster.

Passo 1: criação do cluster

Com o Databricks aberto na página inicial, vamos em "Compute", na aba lateral esquerda, e em "Create compute". Ao clicar nesta opção, temos acesso a algumas informações sobre o cluster que criaremos, como, por exemplo, que é apenas 1 driver, possui 15GB, 2 cores e 1DBU.

Podemos nomeá-lo como "formato_arquivos" e clicar em "Create Cluster". Feito isso, basta aguardar a criação.

Para se certificar de que nosso cluster foi criado, basta conferirmos o ícone de check em verde ao lado do nome do cluster. Ao passar o mouse por este ícone deve aparecer a mensagem "Cluster running", o que significa que ele está rodando.

Na aba lateral, vamos em Settings > Admin Console e clicamos na aba "Workspace settings". Nela, habilitamos a opção "DBFS File Browser". Ao fazê-lo, surge a mensagem de que o DBFS foi habilitado e que devemos recarregar nossa página para que as mudanças sejam aplicadas.

Após recarregar a página, vamos em "Data", no menu lateral. Note que deve haver duas abas: "Database Tables" e "DBFS". Clicando na segunda, que corresponde à opção que acabamos de habilitar, notamos que há algumas pastas, como "FileStore", que foi criada automaticamente quando criamos o cluster. É nela que ficarão os resultados das análises exploratórias que forem feitas em outros experimentos, como, por exemplo, a geração de gráficos, importação de biblioteca, entre outros.

Agora que temos nosso cluster e nossa pasta "FileStore", vamos criar um notebook e uma subpasta de de FileStore > tables, onde poderemos organizar melhor os arquivos trabalhados durante o curso.

Para criar essa pasta, faremos uso da ferramenta Databricks Utilities que nos permite manipular diretórios diretamente no nosso notebook, então precisamos primeiro criar este notebook.

Passo 2: criação do notebook

No menu lateral, vamos em Create > Notebook. O nomeamos como "curso_formatos_arquivos", mantemos a linguagem padrão como Python e o cluster como o "formato_arquivos", criado anteriormente. Feito isso, clicamos em "Create" e aguardamos a criação do notebook.

O notebook será criado e aberto, então agora faremos o seguinte comando para que possamos utilizar o DBUtils (Databricks Utilities):

dbutils.fs.ls("/FileStore/")

Ao o executarmos, será analisado o conteúdo presente em "FileStore".

Note que o retorno não é muito organizado. Então, para que possamos melhor compreender essa visualização, acrescentaremos display() ao início do comando englobando seu conteúdo entre parênteses. Deve ficar assim:

display(dbutils.fs.ls("/FileStore/"))

Ao executar, o retorno deve ser uma listagem dos diretórios presentes na pasta "FileStore", semelhante ao comando ls do Linux.

O que queremos, porém, é verificar o que existe na subpasta "tables", onde criaremos uma pasta. Para isso, copiamos o caminho desta pasta que nos foi retornado na listagem e colamos como parâmetro de dbutils.fs.ls().

Alterando nosso comando, ele deve ficar assim:

display(dbutils.fs.ls("/FileStore/tables"))

Note que o retorno é uma espécie de erro, informando que está vazia, o que é esperado porque não criamos arquivo algum dentro desta pasta.

Passo 3: criação da pasta

Vamos, então, criar uma pasta chamada "arquivos_curso" dentro da pasta "tables". Para isso, usaremos o seguinte comando:

dbutils.fs.mkdirs("/FileStore/tables/arquivos_curso")

Ao executá-lo teclando "Ctrl + Enter" obtemos o retorno "True", o que significa que o comando foi corretamente executado. Para verificar esta ação, vamos em Data > DBFS > FileStore > tables e notamos que "arquivos_curso" já deve aparecer. Nossa pasta foi criada!

Passo 4: download do conjunto de dados

Agora, vamos importar nossos dados.

Para isso, precisamos primeiro fazer o download do conjunto de dados no site do governo. Ao acessá-lo, basta ir em "Recursos" e clicar em "Acessar o recurso", correspondente ao formato JSON. Feito isso, seremos direcionados a uma janela com os dados em JSON, onde clicamos com o botão direito do mouse, selecionamos "Salvar como" e optamos por armazená-lo onde nos for mais conveniente.

O salvamos como "PNSB", então quando usarmos esta sigla, estaremos nos referindo a este arquivo.

Passo 5: importação dos arquivos

Agora vamos, de fato, importar nosso arquivo. Portanto, de volta ao nosso notebook, vamos em Data > DBFS > FileStore > tables > arquivos_curso e clicamos em "Upload" no canto superior direito.

Uma janela abrirá. Nela clicamos em "Drop file to upload", selecionamos o arquivo e aguardamos o carregamento. Quando este for finalizado, note que o caminho (/FileStore/tables/arquivos_curso) aparecerá embaixo do arquivo, então é interessante copiá-lo, pois o usaremos em breve. Por fim, basta clicarmos em "Done".

Nosso arquivo já deve aparecer dentro da pasta "arquivos_curso", mas podemos fazer uma verificação através do seguinte comando:

display(dbutils.fs.ls("/FileStore/tables/arquivos_curso"))

Ao executá-lo, o retorno deve mostrar que nosso arquivo PNSB.json consta dentro da pasta "arquivos_curso".

Conhecemos um pouco de DBFS e de DBUtils, cujos comandos utilizaremos bastante ao longo do curso, além de importar o arquivo que será usado.

Note, porém, que nosso arquivo está em JSON, e ainda não sabemos as vantagens e desvantagens deste formato. Portanto, conheceremos a seguir!

Sobre o curso Databricks: trabalhando com diversos formatos e tipos de arquivos

O curso Databricks: trabalhando com diversos formatos e tipos de arquivos possui 141 minutos de vídeos, em um total de 42 atividades. Gostou? Conheça nossos outros cursos de Engenharia de Dados em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Engenharia de Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas