需求:统计出一天的用户中,登录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中 某列 累计百分比确定阈值相关推荐

  1. excel中算列的百分比

    [color=red]算两列数据的百分比[/color] 比如A1/B2 ,当B2为0时值为#DIV/0! 完美算出百分比步骤 1.设置列C的单元格格式为百分比(可以选择小数位) 2.在C1格写入=I ...

  2. spark期末大作业RDD编程初级实践

    1.需求描述 本次实验需要:系统:linux unbuntu14.04,处理器:至少需要两个处器,一个内核,内存:至少4G,硬盘空间:大小需要20GB.Hadoop:2.7.1以上版本,JDK:1.8 ...

  3. Spark Core快速入门系列(5) | RDD 中函数的传递

      大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  4. spark的RDD中的action(执行)和transformation(转换)两种操作中常见函数介绍

    参考文章:spark的RDD中的action(执行)和transformation(转换)两种操作中常见函数介绍 spark常见的RDD 1. 函数概览 2. 常见的Transformations 操 ...

  5. spark rdd map java_Spark map 遍历rdd中的每个元素

    Map操作主要是遍历rdd中的每个元素,对每个元素进行操作并返回,代码如下: public static void myMap(){ List numbers=Arrays.asList(1,2,3, ...

  6. Spark SQL程序实现RDD转换DataFrame

    通过反射推断Schema 在Spark SQL中有两种方式可以在DataFrame和RDD进行转换 利用反射机制,推导包含某种类型的RDD,通过反射将其转换为指定类型的DataFrame,适用于提前知 ...

  7. scala spark dataframe添加序号(id)列

    在spark的开发中,经常会出现需要为dataframe添加id列的地方,特别对于一些需要存到关系型数据库中的结果,话不多说,下面直接上代码. 1.初始化: val sparks = SparkSes ...

  8. Spark基础之:rdd的特性,DAG,Stage的理解

    rdd的特性,DAG,Stage的理解 RDD 结构化理解 RDD的数据集与Partitions Partitioner Dependencies与Lineage NarrowDependency与S ...

  9. 史上最全的spark面试题——持续更新中

    1.spark中的RDD是什么,有哪些特性? 答:RDD(Resilient Distributed Dataset)叫做分布式数据集,是spark中最基本的数据抽象,它代表一个不可变,可分区,里面的 ...

最新文章

  1. 关于SurfaceView相机预览获取Bitmap的方法
  2. Overlay 网络 — Overview
  3. composer 修改为 国内镜像
  4. HDU4084 插头dp
  5. 使用git时ssh提示“Load key /home/devid/.ssh/id_rsa: bad permissions”的解决办法
  6. 阴雨连绵潮湿加剧 车辆防潮提升保值
  7. 图像处理中的卷积与模板
  8. Scala类型系统的目的——Martin Odersky访谈(三)
  9. linux ps用法大全,linux 性能篇 -- ps的用法
  10. 搜索引擎的那些事(中文分词)
  11. 《Play for Java》学习笔记(七)数据类型解析——Body parser
  12. MyBatis 传入参数之parameterType
  13. jenkins集成sonar问题记录
  14. 暑假学习打卡【3】——北理工乐学第三周作业
  15. 解决MATLAB的xlsread函数读取表格失败
  16. 机票预订系统活动图_机票预订系统程序实施方案说明书模板(面向对象)
  17. C++初学必练基础题【第三期】
  18. 火狐浏览器不兼容event问题
  19. 电脑回收站删除的文件还能找回吗 电脑回收站删除的文件怎么恢复
  20. 双击计算机电脑没反应,win10系统双击我的电脑没反应的设置方法

热门文章

  1. esxi远程管理端口_如何在 vmware esxi 中开放 VNC功能及端口实现远程管理 完整篇...
  2. 大批程序员可能面临被劝退!
  3. 婴儿体重不用计算机怎么算,测量宝宝体重计算器
  4. java jxl 写 excel文件_Java使用jxl包写Excel文件适合列宽实现
  5. 网页数据采集爬虫研究
  6. iPhone 13 不带 Touch ID、搭载 M1X 的 Mac mini 将发布?2021 苹果秋季发布会预测
  7. ncbi爬虫geneID注释
  8. pdf文件过大,如何缩小的操作教程
  9. ​鼠去仓实谷稻熟,牛来福地歌丰年
  10. Java+MySQL基于ssm的物理竞赛管理系统