O Delta Lake fornece uma maneira de controlar a versão dos dados para operações como merge, update e delete. Isso torna transparente o funcionamento do ciclo de vida dos dados gerenciados pelo próprio Delta Lake.
Para cada operação, uma versão é incrementada e se você tiver uma tabela com múltiplas operações, diferentes versões de tabela serão criadas. Delta Lake oferece um mecanismo para navegar pelas diferentes versões chamado Time Travel. É uma forma temporária de acessar dados do passado.
Para este Post, usaremos esse recurso para navegar por diferentes versões da tabela. Abaixo, temos uma Tabela Delta chamada people onde três versões foram geradas através de operações de escrita usando o modo append.
Versão Atual
Quando realizamos uma simples leitura em uma tabela, a versão atual é sempre a mais recente. Portanto, para este cenário, a versão atual é 2 (dois). Observe que não precisamos especificar qual versão queremos usar, porque ainda não estamos usando o Time Travel.
session.read().format("delta").load("table/people")
.orderBy("id").show();
Até aqui, nada mudou, vamos para os próximos passos.
Trabalhando com Time Travel
Agora vamos começar a explorar esta feature chamada Time Travel, para as próximas etapas, faremos leituras na tabela people especificando diferentes versões para entender como funciona esta feature.
Leitura Tabela Delta - Versão 0 (zero)
Como falado anteriormente, temos três versões dessa tabela, para o exemplo a seguir, vamos definir para que na leitura seja carregado dados da versão zero.
session.read().format("delta")
.option("versionAsOf", 0)
.load("table/people")
.orderBy("id").show();
Observe que adicionamos um novo parâmetro chamado versionAsOf , este parâmetro nos permite configurar o número da versão em que você deseja restaurar temporariamente para uma tabela. Para este cenário configuramos a leitura da Tabela Delta versão zero (0). Esta foi a primeira versão gerada pelo Delta Lake após a primeira operação de escrita.
Leitura Tabela Delta - Versão 1(um)
Para esta última etapa, estamos utilizando a versão um (1), observe que os dados da versão anterior (0) foram mantidos.
session.read().format("delta")
.option("versionAsOf", 1)
.load("table/people")
.orderBy("id").show();
Delta Lake fornece muitos benefícios e Time travel nos permite flexibilidade em uma arquitetura Big Data, para obter mais detalhes, recomendo ver as docs do Delta Lake.
Material de estudo
Se quer aprender mais sobre o assunto e alcançar um alto nível de conhecimento, recomendo fortemente a leitura do(s) seguinte(s) livro(s):
Spark: The Definitive Guide: Big Data Processing Made Simple (Versão Inglês) é uma referência completa para quem quer aprender o Spark e sobre as suas principais funcionalidades. Lendo esse livro, você vai aprender sobre DataFrames, Spark SQL através de exemplos práticos. O autor mergulha nas APIs de baixo nível do Spark, RDDs e também sobre como o Spark é executado em um cluster e como depurar e monitorar os aplicativos de clusters do Spark. Os exemplos práticos estão em Scala e Python.
Beginning Apache Spark 3: With Dataframe, Spark SQL, Structured Streaming, and Spark Machine Library (Versão Inglês) com a nova versão do Spark, este livro explora os principais recursos do Spark, como o uso de Dataframes, Spark SQL no qual você pode usar SQL para manipular dados e Structured Streaming para processar dados em tempo real. Este livro contém exemplos práticos e trechos de código para facilitar a leitura.
High Performance Spark: Best Practices for Scaling and Optimizing Apache Spark (Versão Inglês) é um livro que explora as melhores práticas usando a linguagem Spark e Scala para lidar com aplicações de dados em larga escala, técnicas para transformações utilizando RDD, e também mostra como as novas interfaces do Spark SQL melhoram o desempenho sobre a estrutura de dados RDD do SQL, exemplos de Spark MLlib e o uso de bibliotecas de aprendizado de máquina de ML e muito mais.
Python Crash Course, 2nd Edition: A Hands-On, Project-Based Introduction to Programming (Versão Inglês)
abrange os conceitos básicos do Python por meio de exemplos interativos e práticas recomendadas.
Learning Scala: Practical Functional Programming for the Jvm (Versão Inglês) é um excelente livro que aborda a linguagem Scala através de exemplos e exercícios práticos. Lendo este livro, você aprenderá sobre os principais tipos de dados, literais, valores e variáveis. Construir classes que compõem uma ou mais características para total reutilização, criar novas funcionalidades misturando-as na instanciação e muito mais. Scala é uma das principais linguagens em projetos de Big Data em todo o mundo, com grande uso em grandes empresas de tecnologia como o Twitter e também a linguagem principal do Spark.
Bom é isso, espero que tenham gostado!
Comments