- IntelliJ IDEA
- JDK 1.8
- Scala 2.11
- Maven
- Git
- Spark 1.6.0
- 安装JDK-1.8,并设置环境变量
- 安装Scala-2.11.11,并设置环境变量
- 安装IntelliJ IDEA
- 下载此项目源码
git clone https://github.com/Claymoreterasa/spark-learn.git
- 打包下载ZIP
使用IntelliJ IDEA导入此项目,导入时使用Maven作为构建工具,之后下一步到完成即可。导入后需要下载依赖包,先确保电脑联网状态。如未自动下载,可以点击右侧Maven Project
的Reimport
继续下载依赖包。
标明RDD和SQL的,分别用RDD和SQL API实现,标明两种实现方式每种也都要实现
统计每个地点经过的车辆数量
- data/record.json
- src/main/java/utils/VehicleRecord.java
- src/main/scala/rdd/PassbyCount.scala
- src/main/scala/sql/PassbyCount.scala(待实现)
相遇定义:两车之间出现在同一地点的时间间隔小于一分钟
自身以地点为键进行join操作,计算除自身外的车辆是否相遇
(placeId,(eid,time)) join (placeId,(eid,time)) ->
(placeId, (eid1, time1, eid2, time2)) filter (eid1 != eid2 && |time1 - time2| < 60) ->
((eid1, eid2), 1) reduceByKey ->
((eid1, eid2), count)
以地点为键进行分组,同一组内的数据按照时间进行排序,遍历整个列表,看哪些车辆之间满足时间间隔
- data/record.json
- src/main/java/utils/VehicleRecord.java
- src/main/scala/rdd/MeetCount.scala(待实现)
- src/main/scala/sql/MeetCount.scala(待实现)
id,placeId相同,time间隔小于给定时间间隔,则保留最新记录, 最终得到的记录条数应与SendSocket::compact方法结果输出相同
- src/main/java/utils/PlaceTimeRecord.java
- src/main/java/utils/PlaceTimeRecordGenerator.java
- src/main/java/utils/SendSocket.java
- src/main/scala/streaming/Compact.scala(待实现)
检查网络连接,并多次尝试Maven Reimport
。
Spark是一个基于内存计算的分布式计算框架,被广泛使用