Data Lake com Apache Spark, Delta Lake e Apache Iceberg
Este projeto demonstra a implementação de um Data Lake usando Apache Spark com os formatos de tabela Delta Lake e Apache Iceberg, incluindo exemplos de operações de manipulação de dados e comparações entre os dois formatos.
Pré-requisitos
- Python 3.12 ou superior
- Poetry (gerenciador de pacotes Python)
- Java 11 ou superior (necessário para Apache Spark)
- Hadoop 3.0.0 (Necessário para o Apache Iceberg)
- JDK 8 (necessário para Hadoop)
- Git
Instalação
1. Configuração do Ambiente Python
Primeiro, certifique-se de ter o Python 3.12+ instalado:
python --versionSe necessário, instale o Python 3.12:
- macOS:
brew install python@3.12 - Linux: Use o gerenciador de pacotes da sua distribuição
- Windows: Baixe o instalador do python.org
2. Instalação do Poetry
macOS/Linux:
curl -sSL https://install.python-poetry.org | python3 -Windows (PowerShell):
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -Verifique a instalação:
poetry --version3. Configuração do Java e Hadoop
Certifique-se de ter o Java 11+ instalado:
java -versionConfigure a variável JAVA_HOME:
- macOS/Linux: Adicione ao ~/.bashrc ou ~/.zshrc:
export JAVA_HOME=$(/usr/libexec/java_home -v 11) export PATH=$JAVA_HOME/bin:$PATH export HADOOP_HOME=$(/usr/libexec/hadoop)
- Windows: Configure através das Variáveis de Ambiente do Sistema
4. Clone do Repositório
git clone https://github.com/your-username/datalake-with-spark-and-iceberg.git
cd datalake-with-spark-and-iceberg5. Configuração do Projeto
- Instale as dependências do projeto:
poetry install- Ative o ambiente virtual:
poetry shell- Configure o kernel do Jupyter:
poetry run python -m ipykernel install --user --name=datalake-with-spark-and-icebergEstrutura do Projeto
datalake-with-spark-and-iceberg/
├── documentation/ # Documentação detalhada
│ ├── delta/ # Documentação Delta Lake
│ └── iceberg/ # Documentação Apache Iceberg
├── notebooks/ # Notebooks Jupyter
│ ├── dataset_delta/ # Dados e exemplos Delta Lake
│ ├── dataset_iceberg/ # Dados e exemplos Apache Iceberg
│ ├── spark_delta.ipynb # Operações Delta Lake
│ └── spark-iceberg.ipynb # Operações Apache Iceberg
├── src/ # Código fonte
│ └── config/ # Arquivos de configuração
├── pyproject.toml # Configuração do Poetry
└── README.md # Este arquivo
Como Usar
1. Iniciando o Ambiente
- Ative o ambiente virtual:
poetry shell- Inicie o JupyterLab:
poetry run jupyter lab2. Executando os Notebooks
- No JupyterLab:
- Navegue até a pasta
notebooks/ - Abra
spark_delta.ipynbouspark-iceberg.ipynb - Selecione o kernel
datalake-with-spark-and-iceberg - Execute as células em sequência
- Navegue até a pasta
3. Documentação
A documentação detalhada está disponível em:
- Delta Lake:
documentation/delta/index.md - Apache Iceberg:
documentation/iceberg/index.md
Para visualizar a documentação localmente:
poetry run mkdocs serveAcesse http://127.0.0.1:8000 no navegador.
Dependências Principais
[tool.poetry.dependencies]
python = "^3.12"
pyspark = ">=3.5.5,<4.0.0"
delta-spark = ">=3.0.0,<4.0.0"
jupyterlab = ">=4.4.0,<5.0.0"
ipykernel = ">=6.29.5,<7.0.0"
mkdocs = ">=1.5.0,<2.0.0"
mkdocs-material = ">=9.0.0,<10.0.0"
mkdocstrings = ">=0.24.0,<1.0.0"Solução de Problemas
Erro: "No module named 'pyspark'"
- Verifique se está usando o kernel correto:
poetry run jupyter kernelspec list
- Reinstale as dependências:
poetry install
- Reconfigure o kernel:
poetry run python -m ipykernel install --user --name=datalake-with-spark-and-iceberg
Erro de Java
- Verifique a instalação do Java:
java -version
- Configure JAVA_HOME:
echo $JAVA_HOME
- Se necessário, reinstale o Java 11+
Erro de Memória do Spark
- Ajuste as configurações de memória no notebook:
spark.conf.set("spark.driver.memory", "2g") spark.conf.set("spark.executor.memory", "2g")
Contribuindo
- Fork o repositório
- Crie sua branch de feature (
git checkout -b feature/nova-feature) - Commit suas mudanças (
git commit -m 'Adiciona nova feature') - Push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
Referências Bibliográficas
- https://datawaybr.medium.com/como-sair-do-zero-no-delta-lake-em-apenas-uma-aula-d152688a4cc8
- https://medium.com/@r.yamnych/apache-iceberg-to-pyspark-by-example-c9d52843694a
Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.