# easy-spark **Repository Path**: Ganx/easy-spark ## Basic Information - **Project Name**: easy-spark - **Description**: 基于SPARK封装的Java版本快速开发框架,用户只需要关心业务代码,无需关注繁琐的技术细节,大大提高实时流开发效率和难度。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2021-07-07 - **Last Updated**: 2021-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于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 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/)