spark filter过滤某个字段在几个值里面_Spark案例学习-PV的统计
承接上一篇文档《Spark应用的结构》
参数说明:
创建一个Maven项目
Pom文件引入jar,配置信息已经完成,大家可以直接去网盘下载,版本号根据自己的安装情况调整
部分示例
创建一个scala文件,编写代码
1. 构建SparkContext上下文对象
val conf = new SparkConf()val sc = new SparkContext(conf)
此时可以运行这两行代码
会出现错误
需要添加一行代码
setMaster("local")// 指定应用在哪儿执行,可以是local、或者stadnalone、yarn、mesos集群
再运行一次
又报一次错,这个是要求指定应用的名字
添加代码
.setAppName("pvtest") //指定应用的名字
再运行就可以了(启动hadoop)
2. 基于sc构建RDD
端口为core-site.xml中配置的
将文件上传到指定目录
val path = "hdfs://ip:8020/data/page_views.data" //HDFS的schema 给定数据的路径val rdd: RDD[String] = sc.textFile(path)println("总共有" + rdd.count()+ "条数据")
运行可以看到显示
如果不想写schema的话,需要将hadoop的两个文件拷贝到项目的src/main/resources中
两个文件是hadoop的:hdfs-site.xml和core-site.xml
编写代码
val path = /data/page_views.data
运行也可以查看到结果
3. 业务实现
思路:
(1)分析可知道:数据分为7个字段,业务需要三个字段(时间,URL,guid),计算某一个时间的PV的值(2)数据进行过滤清洗,获取两个字段(时间、url)(3)url非空,时间非空,时间字符串的长度必须大于10(4)sql: select date, count(url) from page_view group by date;(5)sql: select date, count(1) from page_view group by date;(6)分别用reduceByKey和groupByKey进行数据处理
我们一步步来
先分割数据
val rdd1 = rdd.map(line => line.split(""))
数据进行过滤清洗,获取两个字段(时间、url)
url非空,时间非空,时间字符串的长度必须大于10
.filter(arr => {//保留正常数据arr.length >2 && arr(1).trim.nonEmpty && arr(0).trim.length > 10})
截取数据
.map(arr => {val date = arr(0).trim.substring(0,10)val url = arr(1).trim(date,1) // (date,url)})
基于reduceByKey做统计pv
val pvRdd = rdd1.reduceByKey(_+_)println("pv------------------" + pvRdd.collect().mkString(";"))
数据表示2013年5月19日一共有100000条访问数据
也可以基于groupByKey实现pv统计(这个可以试一下,如果不行就使用reduceByKey)
groupByKey相当于把相同的key的value放到迭代器里面,也就是这些value都放到内存里面,如果value值数据量撑爆内存,就会OOM异常
val pvRdd = rdd1.groupByKey().map(t => {val date = t._1val pv = t._2.size(date,pv)})println("pv------------------" + pvRdd.collect().mkString(";"))
与上面值相同
spark filter过滤某个字段在几个值里面_Spark案例学习-PV的统计相关推荐
- django 模型类的常见字段约束,以及filter 过滤和查询
null 不设置时默认设置为False.设置为True时,数据库表字段中将存入NULL的记录. null和blank组合使用,null=True,blank=True,表示该字段可以为空 blank ...
- SAP UI5 应用开发教程之六十四 - 基于 OData V4 的 SAP UI5 表格控件如何实现 filter(过滤) 和 sort(排序)功能试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
- PostgreSQL 范围过滤 + 其他字段排序OFFSET LIMIT(多字段区间过滤)的优化与加速
标签 PostgreSQL , 范围过滤 , 其他字段排序 , 索引 , offset , limit 背景 在索引扫描中,如果两个字段扫描都是区间扫描,那么只能用到某个字段的过滤条件,另一个字段需要 ...
- Elasticsearch实战(十五)---查询query,filter过滤,结合aggs 进行局部/全局聚合统计
Elasticsearch实战-查询query,filter过滤,结合aggs 进行局部/全局聚合统计 文章目录 Elasticsearch实战-查询query,filter过滤,结合aggs 进行局 ...
- Log4j日志分类和过滤敏感字段
项目上线时,需要对项目做安全检查,其中有两项是对输出日志进行分类和过滤掉日志中敏感字段. 项目使用Log4j日志系统,下面简单介绍下这两项要求的实现方式. 对日志进行分类,要求调用其他服务的API日志 ...
- TDI Filter 过滤驱动
By Fanxiushu 2013, 引用和转载请注明原作者 为了让大家有兴趣阅读下去, 举个正在使用的可能大家都比较熟悉的例子: 360 的安全卫士里,有个流量防火墙的功能, 它可以监视每个进程的 ...
- Elasticsearch query和filter过滤有什么不同
1. 概述 在使用DSL进行Elasticsearch的查询中,通常我们都是使用query进行过滤匹配,比如下面这段代码 GET /my_index/_search {"query" ...
- 验证多个Filter过滤一个资源时执行顺序
当有多个Filter过滤一个资源时,执行顺序到底是怎样? 如下测试: 定义两个Filter,FirstFilter,SecondFilter,它们过滤同一个index.jsp页面,并且SecondFi ...
- SAP UI5 应用开发教程之六十四 - 基于 OData V4 的 SAP UI5 表格控件如何实现 filter(过滤) 和 sort(排序)功能
本教程的上一个步骤,我们学习了如何基于 OData V4 开发一个最简单的使用了 Table(表格)控件的 SAP UI5 应用. SAP UI5 应用开发教程之六十二 - 基于 OData V4 的 ...
- Android利用Filter过滤数据
MainActivity如下: package cc.testfilterable;import java.util.ArrayList; import java.util.HashMap; impo ...
最新文章
- AAAI 2020论文解读:商汤科技提出新弱监督目标检测框架
- 华南赛区线上比赛安排
- php 按汉字首字母查询[转载]
- 安装失败java.lang_linux安装jdk出现java/lang/NoClassDefFoundError: java/lang/Object错误的解决方案...
- C语言——反弹球游戏(第二阶段
- 前端构建新世代,Esbuild 原来还能这么玩!
- html中ng-src,angular项目中,ie中iframe动态的ng-src,如果是路由的地址(带有#的url),页面不显示,googel却正常...
- linux 执行安装脚本,批量执行Linux安装程序和脚本
- 图像处理-绘制直方图
- 链表的基本操作(单链表)
- OpenCV-Python教程(6、Sobel算子)
- STM32野火教程学习
- 学计算机基础的重要性,论计算机基础的重要性
- P3369 【模板】普通平衡树 Treap树堆学习笔记
- 神话情话(神雕侠侣主题曲)铃声 神话情话(神雕侠侣主题曲)手机...
- seo和网站服务器有什么区别,SEO与竞价推广有什么不同?
- [Vulkan教程]绘制一个三角形/呈现/交换链(Swip chain)
- 解决Web移动端Fixed布局的方案(防止页面露底、overflow-scrolling、iOS下的 Fixed + Input BUG现象、isScroll.js)
- STM32学习之CAN控制器简介
- clk_get函数介绍
热门文章
- 【MySQL】外键踩坑集
- matlab输入一个正的实数x,VB程序题:用InputBox 输入一个正实数,用Pring方法在一行上显示出它的平方和平方根、立方和立方根,每个数保留三位小数,其间有间隔。...
- python处理csv文件计算均值_PYTHON实现对CSV文件多维不同单位数据的归一化处理
- python翻译爬虫_python 翻译爬虫
- 一定质量的封闭气体被压缩后_详解螺杆压缩机工作原理及结构
- php通用下载方法,PHP实现打包下载文件的方法示例
- 【转】java中的Map集合
- 堆排序算法(C#实现)
- Error:Execution failed for task ':app:lint'.
- Let’s Encrypt 推动了 HTTPS 的普及