# 基于spark的快速离线分析框架
在spark基础上,做简单二次封装,简化初级程序员快速入手spark分析程序
## 架构
![架构图](doc/assets/easy-spark.png)
## 架构说明
1. EngineCore自定义封装核心引擎
2. SparkBase开发者继承类: 注入SQLContext,JavaSparkContext,SparkSession,ConfKit,DbFactory
3. SQLContext,JavaSparkContext,SparkSession:spark原生操作类
4. ConfKit:自定义配置文件操作类config.properties
5. DbFactory:数据会话工厂配置各类数据源
## 本地开发模式
### APP入口程序
通过注解的@Engine(name = "engineName")方式声明spark统计任务并继承SparkBase类,实现doAi方法。
```
@Engine(name = "GeoJsonApp")
public class GeoJsonApp extends SparkBase {
@Override
public void doAi(JSONObject params) {
Dataset<Row> jsonDataset = sparkSession.read().json(configKit.getEsparkFilePath());
jsonDataset.printSchema();
jsonDataset.show();
}
}
```
启动任务
```angular2
EngineApp.java 根据参数输入需要调试启动的app
```
## 集群模式
示例已spark standalone模式,每台spark节点统计目录都需要有相同结构且相同文件。
集群提交的格式
* cluster
* config
* lib 程序包
* sh spark任务启动脚本
例如: A,B,C三台spark集群,文件放置目录 /home/easy-spark/cluster
### 集群打包要求
```
mvn clean install -Dmaven.test.skip=true -P cluster-build
```
### 提交脚本命令
注意:geo-json-app.sh脚本内部commonPropertiesPath必须配置成绝对路径否则读取不到自定义配置文件
```
$ cd cluster/sh
$ sh geo-json-app.sh
```
# 基于spark的快速离线分析框架使用文档
[基于spark的快速离线分析框架使用文档](https://shengshifeiyang.gitee.io/easy-spark/)