Spark经典案例7-非结构数据处理

大数据分析技术与实战之 Spark Streaming Spark是基于内存的大数据综合处理引擎,具有优秀的作业调度机制和快速的分布式计算能力,使其能够更加高效地进行迭代计算,因此Spark能够在一定程度上实现大数据的流式处理。 随着信息技术的迅猛发展,数据量呈现出爆炸式增长趋势,数据的种类与变化速度也远远超出人们的想象,因此人们对大数据处理提出了更高的要求,越来越多的领域迫切需要大数据技术来解决领域内的关键问题。在一些特定的领域中(例如金融、灾害预... 阅读详情

需求:根据tomcat日志计算url访问了情况,具体的url如下,
要求:区别统计GET和POST URL访问量
结果为:访问方式、URL、访问量
测试数据集:
在CODE上查看代码片派生到我的代码片
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

由于Tomcat日志是不规则的,需要先过滤清洗数据。


package ClassicCase

import org.apache.spark.{SparkConf, SparkContext}

/**
  * 业务场景:分析非结构化数据
  * Created by YJ on 2017/2/8.
  */


object case7 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("reduce")
    val sc = new SparkContext(conf)
    sc.setLogLevel("ERROR")
    val data = sc.textFile("hdfs://192.168.109.130:8020//user/flume/ClassicCase/case7/*")

    //filter 过滤长度小于0, 过滤不包含GET与POST的URL   
    val filtered = data.filter(_.length() > 0).filter(line => (line.indexOf("GET") > 0 || line.indexOf("POST") > 0))

    //转换成键值对操作  
    val res = filtered.map(line => {
      if (line.indexOf("GET") > 0) {
        //截取 GET 到URL的字符串  
        (line.substring(line.indexOf("GET"), line.indexOf("HTTP/1.0")).trim, 1)
      } else {
        //截取 POST 到URL的字符串  
        (line.substring(line.indexOf("POST"), line.indexOf("HTTP/1.0")).trim, 1)
      } //最后通过reduceByKey求sum  
    }).reduceByKey(_ + _)

    //触发action事件执行  
    res.collect()
  }
}

输出结果
(POST /service/notes/addViewTimes_779.htm,1),
(GET /service/notes/addViewTimes_900.htm,1),
(POST /service/notes/addViewTimes_900.htm,1),
(GET /notes/index-top-3.htm,1),
(GET /html/notes/20140318/24.html,1),
(GET /html/notes/20140609/544.html,1),
(POST /service/notes/addViewTimes_542.htm,2),
(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),
(POST /service/notes/addViewTimes_24.htm,1),
(GET /course/detail/3.htm,1),
(GET /course/list/73.htm,2),
(GET /html/notes/20140617/779.html,1),
(GET /html/notes/20140620/872.html,1)

pyspark 数据处理的三种方式RDD、DataFrame、Spark SQL案例 上一篇对pyspark的一些常用函数做了梳理,这篇主要是针对RDD、DataFrame、SparkSql三种实现同一功能需要的方式做一梳理,通过实际动手,体会不同方式在数据处理过程中的差异性、便利性。 阅读详情

相关推荐

基于地震数据的Spark数据处理与分析

5.根据经纬度获取地名针对全球重大地震数据进行分析,采用Python为编程语言,采用Hadoop存储数据,采用Spark对数据进行处理分析,并对结果进行数据可视化。

weixin_64426947的博客 7138

行业应用: Spark在各行业中的应用与案例

1.背景介绍 Spark是一个开源的大数据处理框架,它可以处理大量数据并提供高性能、高可扩展性和高可靠性的数据处理能力。Spark已经被广泛应用于各个行业,包括金融、电商、医疗、制造业等。在这篇文章中,我们将讨论Spark在各个行业中的应用和案例。 1.1 Spark的优势 Spark的优势在于其高性能、高可扩展性和高可靠性。它可以处理大量数据,并且可以在多个节点之间分布式计算,从而实现高性...

AI天才研究院 2520

Spark 离线数据处理实例

在Jupyter Notebook中,本文档详细介绍了对美妆商品数据的分析流程。首先,进行需求分析,包括找出每个商品小类中价格最高的前5个商品、统计每月订单的订购数量和消费金额、按地区统计订购数量排行、按商品类型统计订购数量排行、分析各省的美妆订购数量以及通过RFM模型挖掘客户价值。接着,进行数据清洗的准备工作,包括安装必要的Python库(如pandas、pyecharts、pyspark-stubs),导入库并加载数据文件。数据清洗步骤包括查看数据内容、检查重复数据、处理空值字段、去除重复数据并重建索引

2502_90817102的博客 1912

Java使用Spark进行数据转换的常用方法和案例

本文介绍了Java使用Spark进行数据转换的方法和案例,包括map、filter、reduce、join等方法,以及单词计数、排序、分组等案例。Spark提供了丰富的API和工具,可以帮助我们快速、高效地处理大数据。

qq_37480069的博客 2428

深入了解数据处理工具Spark

Spark SQL和Spark Streaming通过Structured Streaming实现了高效的协同工作。Structured Streaming基于Spark SQL引擎,提供了可扩展和容错的流处理能力,支持事件时间窗口和流批连接操作。通过将实时数据流转换为结构化数据,并结合SQL查询和DataFrame API,用户可以实现复杂的数据分析和实时决策。这种协同工作方式不仅提高了处理效率,还增强了系统的可靠性和扩展性。

kcarly的专栏 1931

Spark:离线综合案例

分布式计算平台Spark:离线综合案例 一、回顾 SparkSQL使用 开发接口 DSL:使用函数来对表进行处理,类似于RDD的编程,表的体现:DF、DS SQL语法函数:select、where、groupBy、orderBy、limit、agg RDD的函数:map/filter/flatMap SQL:使用SQL语句来实现对表的处理,类似于Hive的编程,表的体现:DF/DS注册成视图、Hive表 step1:将数据集注册为视图 step2:通过SQL语句进行处理 UDF函

qq_43528451的博客 2500

Spark大数据处理讲课笔记3.8 Spark RDD典型案例

(4)取分组后的日期集合最小值,计数为1。(2)利用映射算子生成二元组构成的RDD。(3)按键分组得到新的二元组构成的RDD。(2)倒排,互换RDD中元组的元素顺序。(5)按键计数,得到每日新增用户数。(3)倒排后的RDD按键分组。(1)读取成绩文件得到RDD。(2)创建分组排行榜单例对象。(1)读取文件,得到RDD。(6)让输出结果按日期升序。(3)运行程序,查看结果。(5)按指定格式输出结果。(3)运行程序,查看结果。(4)按值排序,取前三。(1)打开RDD项目。(1)打开RDD项目。

qq_61324603的博客 1013

Spark架构案例鉴赏:Conviva、Yahoo!、优酷土豆、网易、腾讯、淘宝等公司的实际Spark案例

Spark是大数据的第二代技术,目前,SPARK已经构建了自己的整个大数据处理生态系统,如流处理、图技术、机器学习、NoSQL查询等方面都有自己的技术,并且是Apache顶级Project,可以预计的是2014年下半年到2015年在社区和商业应用上会有爆发式的增长。 本课程从实施Spark的架构设计入手,分别细致剖析Conviva、Yahoo!、优酷土豆、网易、腾讯、淘宝等公司的实际Spark案

wangruoze的专栏 1826

Spark数据项目实例一

源数据:https://pan.baidu.com/s/1rzEwBfR1m_lpZHekuEFnCg 提取码:tgpf 使用Spark完成下列日志分析项目需求: 日志数据清洗 用户留存分析 活跃用户分析 活跃用户地域信息分析 用户浏览深度分析 数据清洗 1)读入日志文件并转化为RDD[Row]类型 按照Tab其人格数据 过滤掉字段数量少于8个的 val line1 = linesRDD.map(x => x.split("\t")) val rdd = line1.filter(x => x.

qq_40333693的博客 1万+

Spark github源码 例子很有价值

Spark github源码 例子很有价值 github无法下载的可以直接下载这个源码

spark数据集spam

这个是fast_data_processing_with_spark一书第二章用到的数据集

实验7 Spark初级编程实践

1. Spark读取文件系统的数据 2.编写独立应用程序实现数据去重 对于两个输入文件A和B,编写Spark独立应用程序(推荐使用Scala语言),对两个文件进行合并,并剔除其中重复的内容,得到一个新文件C。下面是输入文件和输出文件的一个样例,供参考。 3.编写独立应用程序实现求平均值问题 每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写Spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。下面是输入文件和输出文件的一个样例,供参考。

程序必须为人类阅读而编写,并且仅仅碰巧可以让机器执行 2万+

(详细总结)python爬取 163收件箱邮件内容,收件箱列表的几种方法(urllib, requests, selenium)

需求:最近有一个需求,需要将163邮箱收件箱里面的所有邮件的内容全部copy下来,整理到一个word里面,不多也就28页的邮件(不要问我为什么有这需求,不告诉你),自己手动去ctrl+ cv 的话,估计要搞吐。然后就想能不能用python的爬虫来实现,虽然过程比较苦(后期改bug改的要吐了)。但是会后还是将需求实现了。这基本也算是入门了 urllib、requests、selenium这几个py...

man_tou_22 1万+

Spark经典案例分享

Spark经典案例,链接操作案例、二次排序案例

pblh123的专栏 1350

实测昇腾310P跑Qwen3有多慢?手把手带你部署vLLM并记录性能数据

本文实测了昇腾310P在vLLM框架下部署Qwen3模型的性能表现,详细记录了2.5 tokens/s的生成速度及其技术瓶颈。通过环境搭建、基准测试和深度分析,揭示了计算资源利用率不足等关键问题,并提供了实用的优化技巧与监控方案,帮助开发者更好地理解和优化昇腾平台上的大模型部署。

weixin_28724319的博客 895

stm32 Can通讯过滤器寄存器设置(实验验证)

起因:在使用stm32单片机can通讯时,参考手册的介绍与寄存器封装有差别,不好理解怎么去设置寄存器。在参考一些代码时,对怎么去设置过滤器还是难以理解。 解决: 在寄存器封装库中,我们发现CAN过滤器设置寄存器封装有CAN1->sFilterRegister[ x ].FR1 和 CAN1->sFilterRegister[ x ].FR2 两个寄存器,其封装如下:type

u013984214的专栏 3288

【数据仓库】spark大数据处理框架

Spark是一个性能优异的集群计算框架,广泛应用于大数据领域。类似Hadoop,但对Hadoop做了优化,计算任务的中间结果可以存储在内存中,不需要每次都写入HDFS,更适用于需要迭代运算的算法场景中。Spark专注于数据的处理分析,而数据的存储还是要借助于Hadoop分布式文件系统HDFS等来实现。复杂的批量数据处理基于历史数据的交互式查询基于实时数据流的数据处理Spark技术栈基本可以解决以上三种场景问题。

花菜回锅肉的博客 2131

代号OneNET02 STM32+ESP8266 WIFI系列-第2节-STM32单片机通过ESP8266连接WIFI访问OneNET OTA服务器实现SOTA远程程序升级

第2节-STM32单片机通过ESP8266连接WIFI访问OneNET OTA服务器实现SOTA远程程序升级,这一节主要是实现通过OneNET OTA服务器将需要更新的程序远程下载到STM32单片机,这一节主要是引导程序和应用程序的讲解。

weixin_44862509的博客 1904

spark数据处理示例一:分类

spark数据处理示例一:分类@(SPARK)[spark, ML]spark数据处理示例一分类 知识点 1slice 2NaN 3mapValue 4groupBy 5state 6isNaN 7scala的range结构 一REPL测试 1数据准备 2启动spark 3读入数据并简单验证读入情况 4去除标题行 5提取行中的信息 1定义缺失值的处理 2提取行中的字段 3以case类对象的形式返回分

jediael_lu的专栏 5713

windows中搭建sonic云真机环境/云真机环境搭建-基于docker容器部署

基于Windows系统搭建Sonic远程云真机环境实现通过浏览器操作手机端系统

雾林小妖的博客 1016

Matlab之机载雷达系统中的空时自适应处理(STAP)技术(附源码)

在第一个脉冲期间,天线 1 通过天线 N-1 接收的杂波返回与第二个脉冲期间天线 2 通过天线 N 接收的杂波返回相同。该算法可能需要搜索角度和多普勒的所有组合来定位目标,但对于示例,由于确切知道目标的位置,因此可以将处理器定向到该点。然而,接收到的信号不仅包含来自目标的反射回波,还包含来自被照亮地表的回波。然而,由于干扰器的白噪声性质,接收到的干扰信号占据了整个多普勒频段。在以下部分中,您将模拟来自目标、杂波和干扰器的返回,并说明 STAP 技术如何过滤来自接收信号的干扰。假设元件间距是波形波长的一半。

珞瑜的博客 7135

Spark案例实战教程

Spark案例实战 实战代码参考:GitHub - GoAlers/Bigdata_project: 电商大数据项目-推荐系统(java和scala语言) ​

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 7934

EtherCAT主站SOEM -- 1 -- SOEM之ethercattype.h文件分析

“ethercattype.h” 文件用于支持 EtherCAT 网络通信,提供了各种类型定义和宏,以便开发者更轻松地开发 EtherCAT 相关应用程序。这些定义包括数据类型、命令类型、状态类型和错误类型,以支持 EtherCAT 通信。根据具体应用需求,还可以调整一些超时和帧长度设置。这些定义用于处理函数调用的结果,如 EC_NOFRAME(没有帧返回)、EC_ERROR(一般错误)、EC_TIMEOUT(请求超时)等。这些定义用于处理 EtherCAT 命令,例如 EC_CMD_APRD(自动递增读取

常驻客栈的博客--嵌入式EtherCAT 2714

Spark实时数据处理实战:从小白到高手的蜕变之路

本文系统介绍了Spark实时数据处理技术。首先阐述了Spark的核心特性与组件架构,重点分析了Spark Streaming的微批处理机制和DStream抽象。随后通过电商平台实时分析案例,详细演示了从环境搭建、数据准备到代码实现的完整流程,包括用户行为统计、商品热度计算等功能。文章还深入探讨了性能优化策略,如并行度调整、数据结构选择和序列化方式优化。最后展望了Spark与AI融合、云原生支持等未来发展趋势。通过理论与实战结合的方式,全面展示了Spark在实时数据处理中的强大能力和应用价值。

大雨淅淅的博客 1242

C++-ONNX:用onnxruntime部署自己的模型【Pytorch导出.onnx】【Tensorflow导出.onnx】【C++用onnxruntime框架部署并推理】

微软联合Facebook等在2017年搞了个深度学习以及机器学习模型的格式标准–ONNX,旨在将所有模型格式统一为一致,更方便地实现模型部署。现在大多数的深度学习框架都支持ONNX模型转出并提供相应的导出接口。ONNXRuntime(Open Neural Network Exchange)是微软推出的一款针对ONNX模型格式的推理框架,用户可以非常便利的用其运行一个onnx模型。ONNXRuntime支持多种运行后端包括CPU,GPU,TensorRT,DML等。

u013250861的博客 5766

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

视频教程-Spark快速大数据处理-Spark

Spark快速大数据处理 松鼠学苑创始人,大数据与人工智能领域高级研究员,著...

weixin_32675359的博客 669

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: Spark经典案例6-求top值
下一篇: Linux-Test(测试指令)
yjgithub
博客等级 码龄11年 53粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值