- 编程语言81
- 案例70
- 大数据55
- 中间件48
- 电子书42
- 数据库42
- Go30
- 开源27
- 人工智能25
- CI&CD24
- 软件工程23
- 设计模式23
- Python21
- 数据仓库21
- 任正非20
- Docker20
- 杂项20
- JMeter17
- 微服务15
- 移动端15
- HarmonyOS15
- MySQL15
- Flink14
- 节略章节合辑13
- 软件许可证13
- 原型解构13
- 数据库设计13
- 新零售13
- 分库分表13
- 应用12
- 社交平台12
- 关系推荐12
- 数据科学基础12
- 关于11
- 胡言乱语11
- Linux11
- Clickhouse11
- 集成10
- 原型工具10
- 开发过程10
- Java10
- Spark10
- RocketMQ10
- Axure9
- U-AIGC9
- UI原型9
- Scala8
- Groovy8
- 兼容GPL的许可证8
- 产品经理8
- 智能硬件8
- 大数据风控8
- 爬虫8
- MongoDB8
- Kotlin8
- LUA8
- 程序员的数学7
- 短视频7
- APP7
- Hive7
- 七大设计原则7
- ArkTS7
- GPT6
- API6
- Hadoop6
- HBase6
- 领域模型6
- Kafka6
- Spring Security6
- Java高并发6
- 关于我5
- 开源常识5
- 车联网5
- Redis5
- Aviator5
- Flume5
- Caffeine5
- Google Guava5
- 毛泽东选集4
- 工具4
- 特色农产品4
- 文档许可证4
- 自由文档许可证4
- 其他许可证4
- 可穿戴产品4
- 流水线4
- Elasticsearch4
- Neo4j4
- 技术论文3
- 我写的书3
- 跑腿闪送3
- 设计心理学3
- 分布式3
- Android3
- 不兼容GPL的许可证3
- 电商3
- PC端3
- Apache Commons3
- Drools2
- 非自由软件许可证2
- 用户研究2
- 个人爱好1
- 个人能力1
- 超级个体1
- 第一卷1
- AIGC1
- 视觉交互设计1
- 数学1
- 站点部署1
- 智能穿戴1
- Balsamiq Mockups1
- Apache1
- AB压测1
- 第二卷1
- 第三卷1
- 第四卷1
- captcha1
- FaceRecognition1
- 地图1
- OSS1
- 支付1
- PUSH1
- OAuth 2.01
- SMS1
- weather1
- 综合性交互设计1
- 复杂设计1
- 情感设计1
- 云原生1
- 全局唯一ID1
- 幂等性1
- 事务1
- 瀑布模型1
- Azkaban1
- Canal1
- FileBeat1
- Sqoop1
- Zepplin1
- Lua1
- 加密算法1
- SSL1
- TLS1
- CA证书1
- HTTPS1
- Spring AI1
- 用户体验五要素1
- UFD分析法1
- 产品类型1
- 盈利模式1
- 可行性判断1
- 定价策略1
- 黑盒测试1
- 灰度测试1
- AB测试1
- PEST1
- SWOT1
- MRD1
- PRD1
- KANO模型分析1
- 需求价值分析1
- 车机交互1
- 分布式事务1
- Matplotlib1
- Pandas1
- Numpy1
- Scipy1
- Impala1
- 合成复用原则1
- 迪米特法则1
- 依赖反转原则1
- 接口隔离原则1
- 里氏替换原则1
- 开闭原则1
- 单一职责原则1
- 敏捷过程1
- RUP1
- UML1
- ERD1
- ElasticSearch1
- Cangjie1
- Cache1
- EventBus1
- common-fileupload1
- commons-lang31
原创大约 2 分钟
原创大约 8 分钟
原创大约 6 分钟
原创大约 3 分钟
原创大约 3 分钟
整体的数据计算指标需求如下。
-
任务1:将数据库中的粉丝历史关注数据
follow_00
~follow_09
批量导入到Neo4j中,这个任务在初始化的时候只需要执行一次。 -
任务2:通过Spark实时维护粉丝的关注与取消关注数据,它的数据源自于Kafka中的
user_follow
这个Topic
,它的计算结果也保存到Neo4j。 -
任务3:通过Spark每天计算并更新用户的活跃时间,如果当天活跃过,就更新最近活跃时间为当前日期,这是针对主播和粉丝都会进行的计算任务,它的数据源自于HDFS中的
user_active
,计算结果保存到Neo4j。 -
任务4:通过Spark每天计算并更新主播等级数据,这项计算任务仅针对主播,它的数据源自于HDFS中的
user_level
,计算结果保存到Neo4j。 -
任务5:通过Spark每周计算主播最近30天的内容评级,它的数据源自于HDFS中的
live_info
,计算结果保存到Neo4j。 -
任务6:通过Spark每周计算主播近一个周的三度关系列表,参与计算的主播需要满足下面几个前提条件。
-
主播近一周内处于活跃状态。
-
主播等级 > 10。
-
主播近30天至少3条内容评价满足A+。
-
主播粉丝列表关注重合度 > 2。
-
-
任务7:每周将计算结果导出到MySQL。
原创大约 2 分钟
# 将之前导出的数据文件follower_0${i}.log拷贝到neo4j的import目录
> cp /var/logs/follower_*.log /home/work/neo4j-community-5.23.0/import
> cd /home/work/neo4j-community-5.23.0
> ./bin/cypher-shell -a neo4j://172.16.185.176:7687 -u root -p 12345678
# 创建索引
neo4j> CREATE CONSTRAINT ON (u:User) ASSERT u.uid IS UNIQUE;
# 逐个导入数据
neo4j> LOAD CSV FROM 'file:///follower_00.log' AS row
MERGE (viewer:User {uid: toString(row[1])})
MERGE (anchor:User {uid: toString(row[2])})
MERGE (viewer) -[:follow]-> (anchor);
neo4j> LOAD CSV FROM 'file:///follower_01.log' AS row
MERGE (viewer:User {uid: toString(row[1])})
MERGE (anchor:User {uid: toString(row[2])})
MERGE (viewer) -[:follow]-> (anchor);
......
neo4j> LOAD CSV FROM 'file:///follower_09.log' AS row
MERGE (viewer:User {uid: toString(row[1])})
MERGE (anchor:User {uid: toString(row[2])})
MERGE (viewer) -[:follow]-> (anchor);
原创小于 1 分钟
这一部分的数据来源于Kafka中的user_follow
这个Topic
,它的计算结果会被保存到Neo4j。
它的数据格式如下。
{
"fid":"1",
"uid":"2",
"time":1718102763768,
"type":"follow", # follow表示关注,或者为unfollow,表示取消关注
"desc":"follow" # 同上
}
原创大约 6 分钟