不包含任何业务逻辑不依赖其他模块相关工具保持单例1.3 context模块Spark或者其他程序 执行入口,负责初始化各种计算引擎的环境变量 。
系统 全局配置(conf)与脚本(bin) 集中管理依赖server、api、common程序关键点需要打印日志以便后续debug使用1.4 server模块整个项目中整合了业务逻辑调用、数据源读写等操作的模块,需求简单的情况下可以直接集成到 context 中 。
该模块中根据不同的接口操作类,还划分了 dal、service与manager三个包 。
1.4.1 dal包
主要是对数据进行操作,如读写常用的库:Hive、MySQL、HBase;以及读写文件系统:HDFS 。
dal中的所有使用都由接口来定义,不同的接口实现使用不同的应用框架API,如Spark、Flink应该为两个独立的dal实现,在后续service使用过程中可以自由切换 。
需要遵循以下原则:
所有bean对象,定义在dal不得在dal写各种业务逻辑、数据清洗逻辑一张表对应一个dal接口、一个bean,对应多个独立的dao实现不允许在1个dao中同时操作多个表包结构如下:
basic: basic包下主要放一些基础对象,如BaseDao,所有dao都需要完善 TABLE_NAMEbean: 定义数据源表结构,不同的数据源可以定义在不同的包中,如hive、hbase、mysql等dao: 接口具体实现,用来操作数据表 。如:增删改查1.4.2 service包
和dao对接,一个service对应一个dao,service的使用都由接口来定义 。
一个service下有两个实现包:
正常实现包:直接对接dao,简单处理一些判断:如参数不合法校验等 。测试实现包:模拟数据,可以不通过dao获取,从本地文件生成或代码中生成 。不同的计算框架有不同的service实现,如spark、flink等(需要传入其环境变量) 。
1.4.3 manager包
调用service包实现数据增删改查调用api模块进行业务逻辑组合提供函数接口给context模块调用执行二、代码框架基于以上项目模块的划分,我们可以看到,api、common是 每次都会变化的业务逻辑和通用属性的抽取,而 context 是根据业务需要的计算引擎和运行环境设置的 执行入口 。
以上三个模块都是 根据业务需求变化比较大的,而server模块则是负责对 其他各个模块的调用与整合,最后通过 manager 提供统一的函数接口给 context 入口调用执行 。
所以 server 模块是这个项目规范中可以 自动化 起来的重点目标 。
基于这个目标,我们开发了一个 大数据业务开发 基准项目的雏形,开发人员能够做到开箱即用,不必再花太多精力在研究计算引擎与各个数据源的接口和API如何调用,专注于业务逻辑的实现,提升开发效率 。
项目地址:https://github.com/chubbyjiang/aisql-bigdata-base
使用介绍
org.aisql.bigdata.base.framework 包中提供了几种常见大数据项目需要用到的数据源 。
framework 以 模块化项目 的结构提供了 各个数据源基础的Dao、Service接口与默认实现 。
配合自动化的代码生成工具,可以一键生成 server 模块的代码文件直接使用 。
现在我们来看一下规范+自动化的威力,例如现有 default.t_users 表需要读取 。
开发人员仅需要生成代码文件并复制到项目中,写代码如下:
val service = new UsersService//读取整个表val allRdd:RDD[Users] = service.selectAll()//字段筛选val allRdd:RDD[Users] = service.selectAllWithCols(Seq("name","age"))//条件过滤val allRdd:RDD[Users] = service.selectAllByWhere("age>10")//读取1000条数据val demoRdd:RDD[Users] = service.selectDemo()//写入表service.insertInto(demoRDD)service.createTable(demoRDD)是不是 so easy?
其实所做的内容也就是在 server 模块中封装了 常用的不同计算引擎对不同数据源的读写操作API,并 自动化了 bean、dal、service 三个部分的代码生成 。
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 苹果手机铃声设置教程 苹果5s设置铃声怎么设置
- cass教程入门到精通 南方cass教程入门
- macbook pro 拆机图解 mac拆机教程
- android基础入门知识 android基础教程学习
- 简述智能网络技术 人工智能网络教程
- 苹果手机如何刷机?只需要这五个步骤 苹果6如何刷机教程
- 台式机械硬盘安装教程 hdtune硬盘检测工具怎么办
- 安卓手机上最好的虚拟机操作 vmware安卓版教程
- 电脑开不开机怎么重装系统教程 win7无法关机怎么办
- 免费的twitter加速器推荐 twitter官网注册教程