第十八周 直播平台三度关系推荐v2.0-2
每周一计算最近一周内主活主播的三度关系列表(任务六)
1 | 使用Flink程序实现每周一计算最近一周内主活主播的三度关系列表 |
子项目pom
1 | <?xml version="1.0" encoding="UTF-8"?> |
1 | 在resources目录中添加log4j.properties配置文件 |
Neo4jInputFormat.scala
1 | 创建类:Neo4jInputFormat |
1 | package com.imooc.flink |
GetRecommendList.scala
1 | package com.imooc.flink |
1 | 其实我们也可以直接在这里将结果输入写入到redis中,不过为了整体看起来更加规范,在这就先把数据临时写到hdfs上面。 |

打包
1 | 接下来对程序编译打包 |
startGetRecommendList.sh
1 | !/bin/bash |
提交任务
1 | sh -x startGetRecommendList.sh 20260201 |

三度关系列表数据导出到Redis(任务七)
1 | 使用Flink程序实现将三度关系列表数据导出到Redis |
1 | 创建子module项目:export_data |
pom.xml
1 | <?xml version="1.0" encoding="UTF-8"?> |
1 | 在resources目录中添加log4j.properties配置文件 |
ExportDataScala
1 | package com.imooc.flink |
1 | 注意:在执行代码之前,需要先把redis服务启动起来 |
本地执行
1 | 在本地执行代码,到redis中验证效果。 |



打包
1 | 接下来对程序编译打包 |
startExportData.sh
1 | !/bin/bash |
提交任务
1 | 向集群提交任务,先把redis中之前生成的数据删一下 |
1 | 任务成功执行,验证redis中的结果也是正确的 |
数据接口定义及开发(java web了解即可)
1 | 前面我们把结果数据计算好了,那接下来我们需要开发数据接口,对外提供数据。 |
数据接口文档定义
1 | 为了方便跨部门数据使用,我们需要定义接口文档,便于其他部门的同事使用我们的数据 |

数据接口代码开发
1 | 开发数据接口需要用到javaweb项目,在这给大家演示一下如何基于spring-boot搭建一个javaweb项目 |
pom.xml
1 | <?xml version="1.0" encoding="UTF-8"?> |
1 | 在项目的resource目录中添加这两个文件 |
1 | 创建包:com.imooc |

1 | 直接在Application类中右键执行,就可以启动这个javaweb项目,项目内部已经集成了tomcta容器,监听的端口是8085 |

1 | 能看到结果数据说明此项目的基础框架是ok的,接下来我们就来开发一个接口 |
1 | 在com.imooc下创建utils目录,把RedisUtils拷贝到里面 |
DataController.java
1 | package com.imooc.controller; |
Application.java
1 | package com.imooc; |
1 | 重新启动data_server项目 |

打包
1 | nohup java -jar data_server-1.0-SNAPSHOT.jar & |
1 | 这个命令相当于模拟浏览器的请求 |

数据展示
1 | 略略略 |
项目扩展优化
如何保证在Neo4j中维护平台全量粉丝关注数据
1 | 针对粉丝关注数据我们有两份 |
1 | 背景是这样的 |

如何解决数据乱序导致的粉丝关注关系不准确
1 | 通过在sparkStreaming内部对读取到的一小批数据基于时间进行排序,按照时间顺序执行粉丝关注相关操作,这样可以从一定程度上解决数据乱序的问题 |
如何优化三度关系推荐列表数据计算程序
1 | 针对三度关系推荐列表数据计算程序:GetRecommendListScala |