在spark基础上,做简单二次封装,简化初级程序员快速入手spark分析程序
文档地址
gitee代码库easy-spark
架构
架构说明
- EngineCore自定义封装核心引擎
- SparkBase开发者继承类: 注入SQLContext,JavaSparkContext,SparkSession,ConfKit,DbFactory
- SQLContext,JavaSparkContext,SparkSession:spark原生操作类
- ConfKit:自定义配置文件操作类config.properties
- 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();
}
}
启动任务
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
不到自定义配置文件