Datalakes modernos com Hudi, MinIO e HMS

Deivison Viana
3 Min de Leitura

Configurando Seu Ambiente

Preparando-se com as Ferramentas Certas

Para iniciar este tutorial, você precisará de alguns softwares específicos. No centro da nossa configuração estão o Docker Engine e o Docker Compose:

  • Docker Engine ajuda a containerizar suas aplicações, tornando-as portáteis e fáceis de executar em qualquer sistema.
  • Docker Compose facilita a execução de aplicações Docker multi-contêiner. Você define e inicia todos os serviços a partir de um único comando.

Se você está configurando isso pela primeira vez, o Docker Desktop simplifica o processo, agrupando o Docker Engine e o Compose. Está disponível para Windows, macOS ou Linux.

Após a instalação, confirme se tudo está funcionando executando docker-compose --version no seu terminal. Nota, para usuários de Mac com chips M2, você precisará do Rosetta 2. Basta executar softwareupdate --install-rosetta em um terminal, e não se esqueça de habilitar o Rosetta nas configurações do Docker Desktop em Configurações → Geral.


Unindo HMS e MinIO

Este tutorial prático utiliza o repositório de demonstração do StarRock. Comece clonando o repositório. Com seu terminal apontado para o diretório documentation-samples/hudi, inicie a configuração com docker compose up. Esta ação inicia o StarRocks, HMS e MinIO.

Visite o Console MinIO em http://localhost:9000/ e faça login usando admin:password. Você verá um bucket warehouse pré-criado, sinalizando um início bem-sucedido.


Inserção de Dados com Spark Scala

Acessando o contêiner spark-hudi, entre no ambiente REPL do Spark para começar a manipulação de dados. Aqui está um resumo rápido:

  1. Comece executando docker exec -it hudi-spark-hudi-1 /bin/bash seguido por /spark-3.2.1-bin-hadoop3.2/bin/spark-shell.
  2. Dentro do shell do Spark, execute comandos Scala para configurar seu banco de dados e tabelas, e então inserir dados.

Aqui está um exemplo de configuração de esquema e processo de inserção de dados:

import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
import org.apache.spark.sql.Row
import org.apache.spark.sql.SaveMode._
import org.apache.hudi.DataSourceReadOptions._
import org.apache.hudi.DataSourceWriteOptions._
import org.apache.hudi.config.HoodieWriteConfig._
import scala.collection.JavaConversions._

val schema = StructType(Array(
  StructField("linguagem", StringType, true),
  StructField("usuários", StringType, true),
  StructField("id", StringType, true)
))

// Defina seus dados
val rowData= Seq(
  Row("Java", "20000", "a"),
  Row("Python", "100000", "b"),
  Row("Scala", "3000", "c")
)

// Crie um DataFrame
val df = spark.createDataFrame(rowData, schema)

// Configurando e salvando os dados
df.write.format("hudi").
  option("nome da tabela", "nome_da_sua_tabela").
  ... // Configurações adicionais
  save("s3a://warehouse/seu_caminho_de_dados")

Isso conclui o nosso tutorial de inserção de dados. A seguir, você aprenderá sobre como explorar esses dados e extrair insights.

O conteúdo completo revisado, junto com guias detalhados para cada segmento, será disponibilizado em breve, garantindo uma compreensão abrangente sobre a configuração e gestão de datalakes modernos com Hudi, MinIO e HMS.

val hudiDF = spark.read.format("hudi").load(basePath + "/*/*")

hudiDF.show()

val languageUserCount = hudiDF.groupBy("language").agg(sum("users").as("total_users"))
languageUserCount.show()

val uniqueLanguages = hudiDF.select("language").distinct()
uniqueLanguages.show()

// Stop the Spark session
System.exit(0)
Compartilhe Este Artigo
A seguir:
Com mais de 15 anos de experiência na área de Tecnologia da Informação, tenho construído uma carreira distintiva como Arquiteto de Software e Gestor de T.I., posicionando-me na vanguarda da inovação tecnológica. Especialista em Big Data, Analytics e Business Intelligence aplicados aos negócios, minha trajetória é pautada na excelência e na transformação digital de organizações através do poder dos dados. Detentor de uma profunda expertise técnica e estratégica, sou certificado em Análise de Dados pela Google, Power BI, Python, além de ter especializações nas principais plataformas de cloud computing: AWS, IBM Cloud, Azure e Google Cloud. Estas qualificações me habilitam a desenvolver soluções de ponta que potencializam a análise de dados, melhoram a tomada de decisão e otimizam a performance empresarial.
Deixe um comentário

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *