【spark】八 自己实现 RDD中 某列 累计百分比确定阈值
需求:统计出一天的用户中,登录1次的用户56422次,登录2次的49422,一直到登录N次的,用户为1个末尾,大多数用户都是正常用户,只会登录最多几十次,现在需要规定阈值设定就是有0.05%的坏人比例,根据该比例来划分登录异常次数的阈值。即按照登录次数升序,用户数量达到99.95%的列作为判定坏人的阈值
数据样例(含实现数据)
time | login_cnt | user_cnt | user_cnt_add | percenter |
---|---|---|---|---|
190315 | 1 | 56422 | 56422 | 56422/sum |
190315 | 2 | 49422 | 105844 | 105844/sum |
190315 | 3 | 36422 | 142266 | 142266/sum |
190315 | 4 | 20000 | 162266 | 162266/sum |
…… | …… | …… | …… | …… |
190315 | 200 | 20 | 300020 | 300020/sum |
…… | …… | …… | …… | …… |
190315 | 400 | 2 | 301022 | 301022/sum |
…… | …… | …… | …… | …… |
190315 | 600 | 1 | 301523 | 301523/sum |
…… | …… | …… | …… | …… |
实现思路,先增加一列填入累加值;再加一列用累加的值除以最大的累加值(也就是user_cnt的和)形成0~1的小数点;再用where/filter去确定百分比符合的行即可
例如实际数据df只有time、login_cnt、user_cnt三列数据
生成如上图数据:
pyspark 中 spark 2.3.1 python 2.7,zeppelin中的代码片段
df.withColumn("acc_ip_cnt_sum",sum("ip_cnt").over(Window.partition("time").orderBy(["login_cnt"],accending=[True]).rowsBetween(Window.unboundedPreceding, Window.currentRow)))
Window的窗口函数,注意排序,rowsBetween中代表计算从哪行到哪行的
Window.unboundedPreceding 前无穷行
Window.currentRow 当前行
Window.unboundedFollowing 后无穷行
rowsBetween(-3,1)//代表前三行到后一行,加上自身所在行一起五行计算。
【spark】八 自己实现 RDD中 某列 累计百分比确定阈值相关推荐
- excel中算列的百分比
[color=red]算两列数据的百分比[/color] 比如A1/B2 ,当B2为0时值为#DIV/0! 完美算出百分比步骤 1.设置列C的单元格格式为百分比(可以选择小数位) 2.在C1格写入=I ...
- spark期末大作业RDD编程初级实践
1.需求描述 本次实验需要:系统:linux unbuntu14.04,处理器:至少需要两个处器,一个内核,内存:至少4G,硬盘空间:大小需要20GB.Hadoop:2.7.1以上版本,JDK:1.8 ...
- Spark Core快速入门系列(5) | RDD 中函数的传递
大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...
- spark的RDD中的action(执行)和transformation(转换)两种操作中常见函数介绍
参考文章:spark的RDD中的action(执行)和transformation(转换)两种操作中常见函数介绍 spark常见的RDD 1. 函数概览 2. 常见的Transformations 操 ...
- spark rdd map java_Spark map 遍历rdd中的每个元素
Map操作主要是遍历rdd中的每个元素,对每个元素进行操作并返回,代码如下: public static void myMap(){ List numbers=Arrays.asList(1,2,3, ...
- Spark SQL程序实现RDD转换DataFrame
通过反射推断Schema 在Spark SQL中有两种方式可以在DataFrame和RDD进行转换 利用反射机制,推导包含某种类型的RDD,通过反射将其转换为指定类型的DataFrame,适用于提前知 ...
- scala spark dataframe添加序号(id)列
在spark的开发中,经常会出现需要为dataframe添加id列的地方,特别对于一些需要存到关系型数据库中的结果,话不多说,下面直接上代码. 1.初始化: val sparks = SparkSes ...
- Spark基础之:rdd的特性,DAG,Stage的理解
rdd的特性,DAG,Stage的理解 RDD 结构化理解 RDD的数据集与Partitions Partitioner Dependencies与Lineage NarrowDependency与S ...
- 史上最全的spark面试题——持续更新中
1.spark中的RDD是什么,有哪些特性? 答:RDD(Resilient Distributed Dataset)叫做分布式数据集,是spark中最基本的数据抽象,它代表一个不可变,可分区,里面的 ...
最新文章
- 关于SurfaceView相机预览获取Bitmap的方法
- Overlay 网络 — Overview
- composer 修改为 国内镜像
- HDU4084 插头dp
- 使用git时ssh提示“Load key /home/devid/.ssh/id_rsa: bad permissions”的解决办法
- 阴雨连绵潮湿加剧 车辆防潮提升保值
- 图像处理中的卷积与模板
- Scala类型系统的目的——Martin Odersky访谈(三)
- linux ps用法大全,linux 性能篇 -- ps的用法
- 搜索引擎的那些事(中文分词)
- 《Play for Java》学习笔记(七)数据类型解析——Body parser
- MyBatis 传入参数之parameterType
- jenkins集成sonar问题记录
- 暑假学习打卡【3】——北理工乐学第三周作业
- 解决MATLAB的xlsread函数读取表格失败
- 机票预订系统活动图_机票预订系统程序实施方案说明书模板(面向对象)
- C++初学必练基础题【第三期】
- 火狐浏览器不兼容event问题
- 电脑回收站删除的文件还能找回吗 电脑回收站删除的文件怎么恢复
- 双击计算机电脑没反应,win10系统双击我的电脑没反应的设置方法
热门文章
- esxi远程管理端口_如何在 vmware esxi 中开放 VNC功能及端口实现远程管理 完整篇...
- 大批程序员可能面临被劝退!
- 婴儿体重不用计算机怎么算,测量宝宝体重计算器
- java jxl 写 excel文件_Java使用jxl包写Excel文件适合列宽实现
- 网页数据采集爬虫研究
- iPhone 13 不带 Touch ID、搭载 M1X 的 Mac mini 将发布?2021 苹果秋季发布会预测
- ncbi爬虫geneID注释
- pdf文件过大,如何缩小的操作教程
- ​鼠去仓实谷稻熟,牛来福地歌丰年
- Java+MySQL基于ssm的物理竞赛管理系统