码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Spark高效数据分析04、RDD创建


    Spark高效数据分析04、RDD创建

    📋前言📋

    💝博客:【红目香薰的博客_CSDN博客-计算机理论,2022年蓝桥杯,MySQL领域博主】💝

    ✍本文由在下【红目香薰】原创,首发于CSDN✍

    🤗2022年最大愿望:【服务百万技术人次】🤗

    💝Spark初始环境地址:【Spark高效数据分析01、idea开发环境搭建】💝


    环境需求

    环境:win10

    开发工具:IntelliJ IDEA 2020.1.3 x64

    maven版本:3.0.5

    RDD产生背景

    RDD产生的目的是为了解决开发人员能在大规模的集群中以一种容错的方式进行内存计算,而当前的很多框架对迭代式算法场景与交互性数据挖掘场景的处理性能非常差, 这个是 RDD 提出的动机
    基于 MR 的数据迭代处理流程和基于 Spark 的数据迭代处理流程如图所示
     

    基于MR的数据迭代处理流程
    基于Spark的数据迭代处理流程

    RDD 的概念

    RDD是弹性分布式数据集 ,是Spark的核心所在
    RDD是只读的、分区记录的集合,它只能基于在稳定物理存储中的数据和其他已有的RDD执行特定的操作来创建
    它是逻辑集中的实体,在集群中的多台机器上进行了数据的分区,通过RDD的依赖关系形成Spark的调度顺序,形成整个Spark行分区
    RDD支持两种算子操作
    转化操作,转化操作是返回一个新的 RDD 的操作
    行动操作,行动操作则是向驱动器程序返回结果或把结果写入外部系统的操作

    RDD 的弹性

    • 自动进行内存和磁盘数据存储的切换
    • 基于系统的高效容错机制
    • Task 如果失败会自动进行特定次数的重试
    • Stage 如果失败会自动进行特定次数的重试
    • Checkpoint 和 Persist 可主动或被动触发
    • 数据调度弹性
    • 数据分区的高度弹性

    Demo-对list进行操作

    1. package com.item.action
    2. import org.apache.spark.{SparkConf, SparkContext}
    3. object Demo7 {
    4. def main(args: Array[String]): Unit = {
    5. var conf =new SparkConf().setAppName("demo").setMaster("local")
    6. var sc =new SparkContext(conf)
    7. val rdd = sc.parallelize(List(2,8,6,3,3,7,9,5))
    8. rdd.distinct().foreach(i=>println(i+"-"))
    9. rdd.sortBy(x=>x,false).foreach(i=>println(i+"-"))
    10. rdd.filter(_>3).foreach(i=>println(i+"-"))
    11. rdd.map(_*2).foreach(i=>println(i+"-"))
    12. }
    13. }

    Demo-对单词数量进行分析

    分析数据:

    id    编号    内容
    A    B    C
    AB    A    B
    C    A    B
    AB    AB    AB

    1. package com.item.action
    2. import org.apache.spark.{SparkConf, SparkContext}
    3. object Demo1 {
    4. def main(args: Array[String]): Unit = {
    5. //直接解压到桌面
    6. val filepath ="C:\\Users\\Administrator\\Desktop\\计应 spark机试考试素材\\计应 spark机试考试素材\\数据/spark1.txt"
    7. //设置配置文件·app名称以及【local本地文件读取】
    8. val sparkConf = new SparkConf().setAppName("demo1").setMaster("local")
    9. //程序的入口
    10. val sc = new SparkContext(sparkConf)
    11. //读取文件
    12. val strfile = sc.textFile(filepath)
    13. //去除首行
    14. var firstRow=sc.textFile(filepath).first()
    15. //将数据进行分割,并筛选出包含有A的数据
    16. val wordes = strfile.filter(!_.equals(firstRow)).flatMap(_.split("\t")).filter(_.contains("A"))
    17. //每个a累计一次
    18. val wordone = wordes.map(a=>(a,1))
    19. // 前面一个下划线表示累加数据,后面一个下划线表示新数据
    20. val result = wordone.reduceByKey(_+_)
    21. //输出位置
    22. result.saveAsTextFile("D://demo/demo1")
    23. }
    24. }

  • 相关阅读:
    自动驾驶系列(七)——聊聊人机交互中的DMS驾驶员监控系统
    模拟器连不上AndroidStudio的处理方案
    用katalon解决接口/自动化测试拦路虎--参数化
    编写一个程序,统计并输出“要把新兴领域改革作为进一步全面深化改革的一个重点突出出来,构建自主自强、开放融合、充满活力的创新生态,更好推进新兴领域战略能力建设。”中的汉字和标点符号的个数
    华为云云耀云服务器L实例评测|华为云云耀云服务器L实例开展性能评测
    everything常用搜索命令
    钉钉内嵌H5遇到的一些问题
    Unity使用NaveMesh实现第一人称视角移动
    【OpenCV】角点检测、特征点提取(Harris、Shi-Tomas、SIFT、SURF、FAST、ORB)学习笔记
    机器学习笔记(1)常见符号,批次梯度下降,随机梯度下降
  • 原文地址:https://blog.csdn.net/feng8403000/article/details/125881550
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号