一个基于Spring Boot的Spark开发手脚架,开箱即用!
spark-submit命令指定Main函数位于com.maxplus1.spark.demo.scala.main。
Task任务位于此包下, 所有Task需要实现com.maxplus1.spark.demo.scala.task.Task
TaskController是object单例,用于顺序调度Task任务。避免使用Shell去控制Spark作业。个人的观点是尽量避免使用bash脚本。
TASK_MAPPING映射了任务名以及任务的类型classOf
入参以JSON的形式传入,传入后会被反序列化为:TaskInput,
TaskInput由taskName:String
和args:java.util.Map[String,String]
组成。
一个参数的例子如下:
{
"taskName": "testTask1",
"args": {
"time": "2017-03-21"
}
}
根据参数的taskName可以从TASK_MAPPING取到相应的Task,
并根据传入的参数taskName顺序获得有序数组tasks: Array[Task]
,
将tasks: Array[Task]
传入TaskController可以顺序执行Task。
持久层使用Java版本的MyBatis, 一般来说数据库操作用于读取相关配置参数或者写入程序状态。
请留意pom.xml
- Scala语法糖实在太多……这个既是好处也是坏处
- Java更适合于面向对象编程,而Scala函数编程的特性,更适合用于计算,符合数学思维的特性。所以使用Java写面向对象的代码,使用Scala写Spark相关计算代码。
- PS:以上属于个人理解,且听且思。