大数据出行项目实践1
大数据出行项目实践1
一、项目需求
随着人们对出行的需求日益增加,出行的安全问题,出行的便捷问题等问题日益突出,特别是安全出行是我们每个人都迫切需要的,为了增加出行的便捷,提高出行的安全,对我们乘车的细节以及发生点我们迫切的需要及时知道,为此特地通过大数据的手段来处理我们海量的出行数据,做到订单的实时监控,乘车轨迹的的回放,虚拟打车站的选定等功能。
二、项目效果
1、轨迹回放
2、虚拟车站
上车点儿计算
3、订单监控
一、技术选型
数据的生命周期
数据的产生>数据的存储>数据的存储>计算>应用
1、数据采集
采集框架 |
主要功能 |
版本号 |
Flume |
擅长日志数据的采集和分析 |
1.9.0 |
还有ELK
2、消息中间件
用的kafka,采用2.6.2版本。对大数据高吞吐量支持最好的框架。
3、数据存储
框架名称 |
主要用途 |
版本号 |
Hadoop |
分布式文件存储系统 |
3.2.2 |
Hbase |
Key,value的nosql数据库 |
|
4、计算框架
框架名称 |
基本介绍 |
版本 |
Spark |
一站式解决批流处理问题 |
3.1.1 |
四、日志格式
五、项目架构
六、Scala 基础
1、简介
scala是运行在jvm上的多范式编程语言,同时支持面向对象和面向函数编程。它的主要优势是表达性强。
2、环境搭建
①安装scala sdk
访问地址:https://www.scala-lang.org/download/2.11.8.html,下载安装包,并配置环境变量。
②安装IDEA的scala插件
3、scala中声明变量
val定义的是不可重新赋值的变量(值不可修改)
var定义的是可重新赋值的变量(值可以修改)
4、方法和函数
语法:
def methodName (参数名:参数类型, 参数名:参数类型) : [return type] = {
// 方法体:一系列的代码
}
说明:
- 参数列表的参数类型不能省略
- 返回值类型可以省略,由scala编译器自动推断
- 返回值可以不写return,默认就是{}块表达式的值
主要
- 如果定义递归方法,不能省略返回值类型
5、方法参数
默认参数:在定义方法时可以给参数定义一个默认值。
带名参数:在调用方法时,可以指定参数的名称来进行调用。
5、函数
语法:val 函数变量名={参数名:参数类型,参数名:参数类型.....}=>函数体
注意:
函数是一个变量,长的与方法相似,但不同于方法类似于方法,函数也有输入参数和返回值函数定义不需要使用def定义无需指定返回值类型
6、foreach
7、Map
把参数做一些改变返回新的集合。
def map[B](f: (A) ⇒ B): TraversableOnce[B]
8、Flatmap
9、还有Fliter、sort、reduce、group by