Skip to content

Commit 4b1c7b2

Browse files
committed
MVP complete
0 parents  commit 4b1c7b2

15 files changed

+1060
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Project exclude paths
2+
/target/

.idea/.gitignore

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/compiler.xml

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/encodings.xml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/jarRepositories.xml

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pom.xml

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.dataanalyzer</groupId>
8+
<artifactId>java-spark-data-analyzer</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
11+
<properties>
12+
<maven.compiler.source>11</maven.compiler.source>
13+
<maven.compiler.target>11</maven.compiler.target>
14+
<spark.version>3.4.1</spark.version>
15+
<scala.version>2.12</scala.version>
16+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17+
</properties>
18+
19+
<dependencies>
20+
<!-- Apache Spark Core -->
21+
<dependency>
22+
<groupId>org.apache.spark</groupId>
23+
<artifactId>spark-core_${scala.version}</artifactId>
24+
<version>${spark.version}</version>
25+
</dependency>
26+
27+
<!-- Apache Spark SQL -->
28+
<dependency>
29+
<groupId>org.apache.spark</groupId>
30+
<artifactId>spark-sql_${scala.version}</artifactId>
31+
<version>${spark.version}</version>
32+
</dependency>
33+
</dependencies>
34+
35+
<build>
36+
<plugins>
37+
<plugin>
38+
<groupId>org.apache.maven.plugins</groupId>
39+
<artifactId>maven-compiler-plugin</artifactId>
40+
<version>3.10.1</version>
41+
<configuration>
42+
<source>${maven.compiler.source}</source>
43+
<target>${maven.compiler.target}</target>
44+
</configuration>
45+
</plugin>
46+
47+
<!-- Maven Assembly Plugin para criar um JAR executável com todas as dependências -->
48+
<plugin>
49+
<groupId>org.apache.maven.plugins</groupId>
50+
<artifactId>maven-assembly-plugin</artifactId>
51+
<version>3.4.2</version>
52+
<configuration>
53+
<archive>
54+
<manifest>
55+
<mainClass>com.dataanalyzer.DataAnalyzer</mainClass>
56+
</manifest>
57+
</archive>
58+
<descriptorRefs>
59+
<descriptorRef>jar-with-dependencies</descriptorRef>
60+
</descriptorRefs>
61+
</configuration>
62+
<executions>
63+
<execution>
64+
<id>make-assembly</id>
65+
<phase>package</phase>
66+
<goals>
67+
<goal>single</goal>
68+
</goals>
69+
</execution>
70+
</executions>
71+
</plugin>
72+
</plugins>
73+
</build>
74+
</project>

readme.md

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
# 🕵️ Java Spark Data Analyzer
2+
3+
<div align="center">
4+
5+
![Java](https://img.shields.io/badge/Java-11+-orange.svg)
6+
![Apache Spark](https://img.shields.io/badge/Apache%20Spark-3.4.1-blue.svg)
7+
![License](https://img.shields.io/badge/License-MIT-green.svg)
8+
9+
**Um aplicativo Java de análise de dados com Apache Spark que compete diretamente com soluções em Python.**
10+
11+
</div>
12+
13+
---
14+
15+
## ✨ Principais Funcionalidades
16+
17+
- 📊 **Carregamento intuitivo de dados** - Suporte para CSV com diversas opções de configuração
18+
- 🔍 **Visualização interativa** - Exibição de schemas, amostras e estatísticas descritivas
19+
- 🔄 **Transformações poderosas** - Seleção de colunas, criação de novas colunas, renomeação e ordenação
20+
- 🔎 **Filtros avançados** - Aplicação de condições para filtrar dados com precisão
21+
- 📈 **Agregações flexíveis** - Funções como média, soma, mínimo, máximo e contagem
22+
- ⚙️ **Tratamento de dados** - Remoção eficiente de duplicatas e valores nulos
23+
- 💾 **Múltiplos formatos de exportação** - Salvamento em CSV, Parquet e JSON
24+
25+
## 📋 Requisitos
26+
27+
- Java 8 ou 11 (recomendado)
28+
- Java 17+ (requer configurações adicionais)
29+
- Apache Maven
30+
- Memória suficiente para processar seus conjuntos de dados
31+
32+
## ⚙️ Configurações por Versão do Java
33+
34+
### Java 8 ou 11 (Recomendado)
35+
Java 8 ou 11 funcionam diretamente sem configurações adicionais.
36+
37+
### Java 17+
38+
Para usar com Java 17 ou superior, é necessário adicionar as seguintes opções JVM:
39+
```bash
40+
--add-opens=java.base/java.nio=ALL-UNNAMED
41+
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
42+
--add-opens=java.base/java.util=ALL-UNNAMED
43+
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
44+
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
45+
```
46+
47+
## 🔧 Instalação
48+
49+
1. Clone o repositório:
50+
```bash
51+
git clone https://github.com/bulletdev/java-spark-data-analyzer.git
52+
cd java-spark-data-analyzer
53+
```
54+
55+
2. Compile o projeto:
56+
```bash
57+
mvn clean package
58+
```
59+
60+
## ▶️ Execução
61+
62+
### Usando Maven
63+
64+
```bash
65+
# Para Java 8/11
66+
mvn exec:java -Dexec.mainClass="com.dataanalyzer.DataAnalyzer"
67+
68+
# Para Java 17+
69+
mvn exec:java -Dexec.mainClass="com.dataanalyzer.DataAnalyzer" -Dexec.args="" \
70+
-Dexec.cleanupDaemonThreads=false \
71+
-Dexec.jvmArgs="--add-opens=java.base/java.nio=ALL-UNNAMED \
72+
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
73+
--add-opens=java.base/java.util=ALL-UNNAMED \
74+
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED \
75+
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED"
76+
```
77+
78+
### Usando o JAR compilado
79+
80+
```bash
81+
# Para Java 8/11
82+
java -jar target/java-spark-data-analyzer-1.0-SNAPSHOT-jar-with-dependencies.jar
83+
84+
# Para Java 17+
85+
java --add-opens=java.base/java.nio=ALL-UNNAMED \
86+
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED \
87+
--add-opens=java.base/java.util=ALL-UNNAMED \
88+
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED \
89+
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED \
90+
-jar target/java-spark-data-analyzer-1.0-SNAPSHOT-jar-with-dependencies.jar
91+
```
92+
93+
## 📁 Estrutura do Projeto
94+
95+
```
96+
java-spark-data-analyzer/
97+
├── src/
98+
│ └── main/
99+
│ ├── java/
100+
│ │ └── com/
101+
│ │ └── dataanalyzer/
102+
│ │ └── DataAnalyzer.java
103+
│ └── resources/
104+
│ └── dados_vendas.csv
105+
├── pom.xml
106+
└── README.md
107+
```
108+
109+
## ❓ Solução de Problemas
110+
111+
### Windows e Hadoop
112+
113+
O Spark usa algumas funcionalidades do Hadoop que podem gerar avisos no Windows. Se encontrar avisos relacionados ao `winutils.exe` ou `HADOOP_HOME`, você pode:
114+
115+
1. Ignorá-los (não afetam a funcionalidade básica do aplicativo)
116+
2. Configurar o ambiente Hadoop para Windows:
117+
- Baixe o [winutils.exe](https://github.com/cdarlint/winutils)
118+
- Crie uma pasta `C:\hadoop\bin` e coloque o arquivo lá
119+
- Configure a variável de ambiente `HADOOP_HOME=C:\hadoop`
120+
- Adicione `%HADOOP_HOME%\bin` ao PATH
121+
122+
### Aviso de "illegal reflective access"
123+
124+
Este aviso pode aparecer ao usar Java 11. É normal e não afeta o funcionamento do aplicativo.
125+
126+
## 📊 Dados de Exemplo
127+
128+
O projeto inclui um arquivo de exemplo `dados_vendas.csv` com dados fictícios de vendas de produtos eletrônicos para testar as funcionalidades do aplicativo. Este arquivo contém os seguintes campos:
129+
130+
| Campo | Descrição |
131+
|-------|-----------|
132+
| ID | Identificador único da venda |
133+
| Data | Data da venda (formato YYYY-MM-DD) |
134+
| Produto | Nome do produto vendido |
135+
| Categoria | Categoria do produto |
136+
| Preco | Preço unitário do produto |
137+
| Quantidade | Quantidade vendida |
138+
| ClienteID | Identificador do cliente |
139+
| Regiao | Região geográfica da venda |
140+
| Vendedor | Nome do vendedor |
141+
| Desconto | Percentual de desconto aplicado (decimal) |
142+
143+
## 📝 Uso Básico
144+
145+
Ao iniciar o aplicativo, você verá um menu interativo:
146+
147+
1. **Carregue os dados** usando a opção 1
148+
- Digite o caminho para o CSV ou use "example" para o arquivo de exemplo
149+
- Confirme se o arquivo tem cabeçalho (s/n)
150+
- Especifique o delimitador (geralmente vírgula)
151+
152+
2. **Explore os dados**:
153+
- Opção 2: Ver a estrutura (schema) dos dados
154+
- Opção 3: Ver uma amostra dos dados
155+
- Opção 4: Ver estatísticas descritivas
156+
157+
3. **Analise e transforme os dados**:
158+
- Opção 5: Filtrar registros
159+
- Opção 6: Agregar dados (ex: soma de vendas por região)
160+
- Opção 7: Transformar dados (criar colunas, renomear, etc.)
161+
162+
4. **Salve os resultados** usando a opção 8
163+
164+
## 🤝 Contribuições
165+
166+
Contribuições são bem-vindas! Se você encontrar bugs ou tiver sugestões de melhorias, abra uma issue ou envie um pull request.
167+
168+
## 📜 Licença
169+
170+
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
171+
172+
---
173+
174+
<div align="center">
175+
<p><strong>Por que Java para análise de dados?</strong> Desempenho superior, tipagem estática, multithreading robusto e integração perfeita com sistemas empresariais.</p>
176+
<p><em>Java Spark Data Analyzer - A resposta Java para a análise de dados em Python.</em></p>
177+
</div>

0 commit comments

Comments
 (0)