Spark->预热

数据排序

对输入文件中数据进行排序。输入文件中的每行内容均为一个数字,即一个数据。
要求在输出中每行有两个间隔的数字,其中,第一个代表原始数据在原始数据集中的位次,第二个代表原始数据

5956
22
650
92
26
54
6
2
32
654
32
15
756
65223

输出:
1 2
2 6
3 15
4 22
5 26
6 32
7 32
8 54
9 92
10 650
11 654
12 756
13 5956
14 65223

val conf = new SparkConf().setMaster("local").setAppName("reduce")
val sc = new SparkContext(conf)
val fil = sc.textFile("d:/local.txt")
//在Linux里只要下面这一句
fil.map(x=>(x.toInt,"")).sortByKey().map(_._1).zipWithIndex().foreach(rs=>{println(rs._2+1+"\t"+rs._1)})

求平均值

对输入文件中数据进行就算学生平均成绩。输入文件中的每行内容均为一个学生的姓名和他相应的成绩,如果有多门学科,则每门学科为一个文件。
要求在输出中每行有两个间隔的数据,其中,第一个代表学生的姓名,第二个代表其平均成绩。

原数据:
张三,88
李四,99
王五,66
赵六,77
张三,78
李四,89
王五,96
赵六,67
张三,80
李四,82
王五,84
赵六,86

结果:
张三,82
李四,90
王五,82
赵六,76

//这种写死了,扩展不好;用reduceByKey 直接把成绩求总和,但是长度不好拿了
//foreach(rs=>println(rs._1+"\t"+rs._2/3))
//看这
fil.map(x=>{val words = x.split(",");(words(0),words(1).toInt)}).groupByKey().map(y=>(y._1,y._2.reduce(_+_)/y._2.size)).foreach(println)

求最大最小值

数据用的还是第一题里的
所有的排序都是为了查找,所以直接排序查找就行了
后来想想,排序都懒得排了,直接甩给函数做吧

结果:
max:65223 min: 2


val lst=fil.map(x=>(x.toInt)).collect()
    println("max:"+lst.max+" min:"+lst.min)

求top值

求出海量数据中的最大的前5个

原数据:
1,9819,100,121
2,8918,2000,111
3,2813,1234,22
4,9100,10,1101
5,3210,490,111
6,1298,28,1211
7,1010,281,90
8,1818,9000,20
100,3333,10,100
101,9321,1000,293
102,3881,701,20
103,6791,910,30
104,8888,11,39

结果:
9819
9321
9100
9000
8918

fil.flatMap(_.split(",")).map(x=>(x.toInt,1)).sortByKey(false).map(_._1).collect().take(5).foreach(println)
//if  你想 可以在给他们加个编号 
//1 9819
//2 9321
//3 9100
//4 9000
//5 8918

非结构数据处理

根据tomcat日志计算url访问了情况,具体的url如下, 区别统计GET和POST URL访问
输出:量访问方式、URL、访问量

数据:

196.168.2.1 - - [03/Jul/2014:23:36:38 +0800] “GET /course/detail/3.htm HTTP/1.0” 200 38435 0.038
182.131.89.195 - - [03/Jul/2014:23:37:43 +0800] “GET /html/notes/20140617/888.html HTTP/1.0” 301 - 0.000
196.168.2.1 - - [03/Jul/2014:23:38:27 +0800] “POST /service/notes/addViewTimes_23.htm HTTP/1.0” 200 2 0.003
196.168.2.1 - - [03/Jul/2014:23:39:03 +0800] “GET /html/notes/20140617/779.html HTTP/1.0” 200 69539 0.046
196.168.2.1 - - [03/Jul/2014:23:43:00 +0800] “GET /html/notes/20140318/24.html HTTP/1.0” 200 67171 0.049
196.168.2.1 - - [03/Jul/2014:23:43:59 +0800] “POST /service/notes/addViewTimes_779.htm HTTP/1.0” 200 1 0.003
196.168.2.1 - - [03/Jul/2014:23:45:51 +0800] “GET /html/notes/20140617/888.html HTTP/1.0” 200 70044 0.060
196.168.2.1 - - [03/Jul/2014:23:46:17 +0800] “GET /course/list/73.htm HTTP/1.0” 200 12125 0.010
196.168.2.1 - - [03/Jul/2014:23:46:58 +0800] “GET /html/notes/20140609/542.html HTTP/1.0” 200 94971 0.077
196.168.2.1 - - [03/Jul/2014:23:48:31 +0800] “POST /service/notes/addViewTimes_24.htm HTTP/1.0” 200 2 0.003
196.168.2.1 - - [03/Jul/2014:23:48:34 +0800] “POST /service/notes/addViewTimes_542.htm HTTP/1.0” 200 2 0.003
196.168.2.1 - - [03/Jul/2014:23:49:31 +0800] “GET /notes/index-top-3.htm HTTP/1.0” 200 53494 0.041
196.168.2.1 - - [03/Jul/2014:23:50:55 +0800] “GET /html/notes/20140609/544.html HTTP/1.0” 200 183694 0.076
196.168.2.1 - - [03/Jul/2014:23:53:32 +0800] “POST /service/notes/addViewTimes_544.htm HTTP/1.0” 200 2 0.004
196.168.2.1 - - [03/Jul/2014:23:54:53 +0800] “GET /service/notes/addViewTimes_900.htm HTTP/1.0” 200 151770 0.054
196.168.2.1 - - [03/Jul/2014:23:57:42 +0800] “GET /html/notes/20140620/872.html HTTP/1.0” 200 52373 0.034
196.168.2.1 - - [03/Jul/2014:23:58:17 +0800] “POST /service/notes/addViewTimes_900.htm HTTP/1.0” 200 2 0.003
196.168.2.1 - - [03/Jul/2014:23:58:51 +0800] “GET /html/notes/20140617/888.html HTTP/1.0” 200 70044 0.057
186.76.76.76 - - [03/Jul/2014:23:48:34 +0800] “POST /service/notes/addViewTimes_542.htm HTTP/1.0” 200 2 0.003
186.76.76.76 - - [03/Jul/2014:23:46:17 +0800] “GET /course/list/73.htm HTTP/1.0” 200 12125 0.010
8.8.8.8 - - [03/Jul/2014:23:46:58 +0800] “GET /html/notes/20140609/542.html HTTP/1.0” 200 94971 0.077

结果:
(POST /service/notes/addViewTimes_779.htm,1)
(POST /service/notes/addViewTimes_24.htm,1)
(GET /service/notes/addViewTimes_900.htm,1)
(POST /service/notes/addViewTimes_900.htm,1)
(GET /notes/index-top-3.htm,1)
(GET /course/detail/3.htm,1)
(GET /html/notes/20140318/24.html,1)
(GET /course/list/73.htm,2)
(GET /html/notes/20140617/779.html,1)
(GET /html/notes/20140609/544.html,1)
(POST /service/notes/addViewTimes_542.htm,2)
(GET /html/notes/20140620/872.html,1)
(POST /service/notes/addViewTimes_544.htm,1)
(GET /html/notes/20140609/542.html,2)
(POST /service/notes/addViewTimes_23.htm,1)
(GET /html/notes/20140617/888.html,3)

//过滤器过滤一下 里面数据 该是有空的
fil.filter(_.length>0).map(x=>{val lst=x.trim.split("“")(1).split(" ");(lst(0)+" "+lst(1),1)}).reduceByKey(_+_).foreach(println)

倒排索引统计新增用户

根据记录 统计出 新增用户的个数

数据:
2017-01-01 a
2017-01-01 b
2017-01-01 c
2017-01-02 a
2017-01-02 b
2017-01-02 d
2017-01-03 b
2017-01-03 e
2017-01-03 f

结果:
(2017-01-03,2)
(2017-01-02,1)
(2017-01-01,3)


//题 有点难理解 过程不难 
fil.map(x=>{val lst=x.split("\\s+");(lst(1),lst(0))}).groupByKey().map(y=>(y._2.toList(0),1)).reduceByKey(_+_).foreach(println)

就到这把!

我希望以下内容,技术人员一看就明白自己要做什么,所以请进一步描写流程和每一个节点。请注意这里相当于该智能体有跨岗位协作引擎工作流,等。1.运营智能体AI工具需求表 目标:构建跨岗位协同中枢,实现“指令-执行-汇报”闭环,打通多平台账号管理 (1)一、核心功能升级 模块 新增功能描述 输入 输出 技术实现建议 跨岗位协作引擎 1.指令中枢:管理岗输入工作任务,AI自动拆解为子任务 工作任务 (如“618大促推广方案”) 三大输出板块: 1.市场分析,ai根据工作任务分析市场趋势,如历年该时期销量最高日期和时间点,爆款商品的宣传点、折扣优惠计划。 2.内容创作,ai根据市场分析完成工作任务。 3.投放排期,ai根据内容创作的结果进行投放排期的安排。 采用DAG工作流引擎,对接企业IM系统(如企业微信/钉钉) 2.任务分发:按岗位职责自动分配至运营/设计/文案人员界面,实时跟踪进度 内容创作、投放排期 运营/设计/文案的各自任务内容,以及工作进度可视化追踪进度 3.自动汇总:各岗位提交成果后,AI生成结构化汇报(含数据看板+优化建议) 运营/设计/文案的工作成果 ai分析后输出工作成果报表,框架为: 1.运营成果,图表呈现:访客-线形图,加购率、下单率、支付率-三合一综合饼图,成交额-线形图、各购物途径订单量-柱状图。 2.单个设计成果,图表呈现:新老设计图片对比,新老设计点击量对比-线性图,新老设计转换率对比-线性图,用户跳出率-线性图,ai为设计内容打分。 批量输出:如果有多组设计,批量按以下格式输出新老图片对比+新老点击量对比+新老转换率对比+新老跳出率对比+ai打分。 3.文案成果,新旧文案对比(新旧文案内容、点击率-线性图、加购率-线性图) 多账号管理平台 1.一键切换:支持绑定同一平台多个账号(如抖音企业号+员工号),单界面切换账号发布。 各账号的账号和密码/手机号登陆? 发布笔记/视频时,可直接列出所有已登陆的账号名称,选择其中一个账号发布。 集成跨平台API(抖音开放平台/小红书CREATOR等),内置NLP改写模型(如T5+GPT-4o) 2.去重引擎:自动识别即将发布的笔记中,与竞品爆款相似度>85%的内容,标记重复风险 已完成但未发布的笔记 ai将其与竞品爆款笔记的三个方面进行对比:文本相似度比对、图像识别、商品属性分析。如果认为两段内容/商品在核心信息上高度重合,图片为视觉重合,大于85%,则跳出弹窗用红色字进行明确提醒。 3.智能改写:解析爆款笔记,通过ai生成爆款框架,基于爆款框架生成差异化文案(保留核心卖点,调整叙事结构/视觉元素) 爆款笔记的分享链接 1.获取该笔记的标题,标签文案,图片,收藏评论点赞转发。 2.基于ai生成爆款笔记框架。 3.保留标题标签,改写文案,图片根据滤镜和MD5值去重 全域发布协同 1.跨平台适配:同一内容自动调整格式(抖音竖版9:16/小红书3:4) 一组图片/一张图片 1.选择发布的平台 2.根据选择的平台,进行图片格式调整。 调用各平台官方SDK,内置流量规则库(更新机制) 2.定时发布:设置多账号批量发布计划,规避平台限流规则 大致需求 1.ai生成规避平台限流的多账号批量发布计划。 2.根据发布计划,自动进行多账号发布定时的设定。 3.效果追踪:实时统计各账号播放量/转化率,生成跨账号对比报告 已登陆账号 1.实时追踪各账号播放量/转化率,以分钟或小时或日期为单位的线性图。 2.一键生成跨账号播放量/转化率对比报告 (2)二、协同流程示例(以“新品推广”指令为例) graph TD A[管理岗输入指令] --> B[AI拆解任务] B --> C1{运营岗:竞品分析报告} B --> C2{文案岗:爆款文案生成} B --> C3{设计岗:视频分镜脚本} C1 --> D[AI汇总竞品投放策略] C2 --> D[AI优化文案结构] C3 --> D[AI审核分镜可行性] D --> E[自动生成PPT汇报+发布排期表] (3)三、关键技术创新点 1.爆款内容DNA库 o抓取竞品爆款内容 → 拆解为内容要素矩阵(标题结构/BGM/转折点/商品露出时机) o自动生成要素组合建议(例:抖音爆款=悬念标题+0.5s品牌露出+3秒痛点镜头[^1]) 2.跨岗位知识共享 o建立岗位专属知识库:运营侧(平台规则/用户画像)、文案侧(热词库/话术模板)、设计侧(平台视觉规范) o支持智能体跨库检索(如设计岗输入“小红书3C类目首图规范”,自动推送最新案例) 3.安全管控机制 |风险类型|解决方案| |--------------------|---------------------------------| | 账号切换风险 | 操作需双重验证+行为审计日志 | | 内容重复风险 | 相似度实时检测+平台原创度评分 | | 权限泄露风险 | 基于RBAC模型的字段级数据隔离 | (4)四、落地实施建议 1.技术架构# 核心组件组成 Orchestrator = Workflow_Engine() + Cross_Platform_API_Gateway() Content_Module = Plagiarism_Detector() + Multi_Modal_Generator(model="GPT-4o") Account_Manager = Permission_Controller(RBAC) + Auto_Publish_Scheduler() 研发重点提示:优先确保抖音/小红书官方API对接合规性,采用OAuth2.0授权机制;任务流引擎需支持实时回滚(防止某环节失败导致数据丢失)。 附:竞品技术参考 360智语的「智能体业务流程融合」方案(政企场景权限管控[^3]) 爆款内容原子化重组技术(符合工作时空解构趋势[^2])
06-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值