Spark-RDD编程

2023-10-26

Spark在进行计算的时候通常会包含以下几个步骤

  1. 创建SparkContext上下文对象
  2. 使用SparkContext加载数据创建RDD
  3. RDD的转换算子transfotmations
  4. RDD的行动算子actions
  5. RDD的缓存和持久化

1.创建SparkContext上下文对象

    // SparkContext
    // 创建SparkConf对象用于配置参数
    val conf = new SparkConf
    //   连接集群
    //   conf.setMaster("spark://host02:7077")
    // 本地测试时可以使用local作为master
    // 设置本地模式运行spark程序  允许使用2个cpu核心
    conf.setMaster("local[2]")
    // 设置应用程序的名称
    conf.setAppName("WordCount")
    //获取SparkContext对象
    val sc = new SparkContext(conf)

2.使用SparkContext加载数据创建RDD

	// 创建RDD
    // 1. 使用scala集合创建RDD 通常用于测试
    // 1.1 makeRDD
    //函数声明
    // def makeRDD[T: ClassTag](
    //      seq: Seq[T],
    //      numSlices: Int = defaultParallelism): RDD[T] =
    val RDD: RDD[Int] = sc.makeRDD(1 to 10, 4)
    val numPar = RDD.getNumPartitions
    //    println(numPar)
    //    println(rdd.count())
    //1.2  parallelize
    // parallelize是早期的SparkApi
    // 由于单词太长,所以重新封装为makeRDD
    // def parallelize[T: ClassTag](
    //      seq: Seq[T],
    //      numSlices: Int = defaultParallelism): RDD[T] =


    // 2. 读取文件创建RDD
    // 生产环境会将原始数据保存在HDFS上
    // 使用SparkContext从HDFS读取数据创建RDD	

    // 2.1 读取文本文件
    // 将文本文件按行读取 每行作为RDD的一个元素
	val filePath = "xxxxxxx"
    val RDD = sc.textFile(filePath)

    // 2.2 读取SequenceFile
    // Hadoop中有时会使用SequenceFile进行KV数据存储
    // Spark为了兼容Hadoop提供了SequenceFile的解析方式
    val RDD3: RDD[(String, String)] = sc.sequenceFile[String, String]("C:\\Users\\Amos\\Desktop\\output")

    // 2.3 读取ObjectFile
    sc.objectFile("C:\\Users\\Amos\\Desktop\\objectFile")  

3.RDD的转换算子transfotmations

    //这一步的目的就是将RDD使用转换算子处理,形成一个新的RDD传递给下一步操作

//常见的转化算子

    // 1. map 映射
    // 1.1 声明
    //   def map[U: ClassTag](f: T => U): RDD[U] =
    // 1.2 参数
    //   f 一元函数
    //   f的参数是源RDD的元素类型
    //   f的返回值 是任意类型
    // 1.3 返回值
    //    一个新的RDD  泛型是f的返回值类型
    // 1.4 作用
    //    将源RDD中的元素依次传入f中
    //    将f的返回值收集到新的RDD并返回
	// 1.5 Eample
        RDD.map(x=>{
            val strings = x.split(" ")
            strings.head
        })

	// 2. filter  过滤
    // 2.1. 声明
    // def filter(f: T => Boolean): RDD[T] =
    // 2.2. 参数  源RDD的元素类型
    // 2.3. 返回值 Boolean
    // 2.4. 作用
    //  保留满足条件的元素
	// 2.5 Example
        RDD.filter(x=>{
            x.split(" ")(8) == "200"
        })

    // 3. flatMap  扁平化处理
    // 3.1. 声明                         									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark-RDD编程 的相关文章

随机推荐

  • recyclerView的滑动

    1 无感知滑动 layoutManager scrollToPositionWithOffset int position int offset 第一个参数是指第几项 第二个参数是跟顶部的距离 当你的屏幕只能显示10项就满了 但是你的dat
  • 数组以及指针数组遍历&Demo

    遍历数组以及指针数组 Demo By C include
  • 【以太坊开发】 问题 etherbase must be explicitly specified

    1 使用geth启动在私有链环境下 提示如下问题 html view plain copy Updated mining threads threads 0 INFO 08 17 21 31 30 Transaction pool pric
  • flutter pubspec添加依赖无法获取flutter_test

    pubspec yaml 文件初次添加的时候拷过来没格式化 packages get 一直失败各种尝试无果 后来格式化了一下 就可以了
  • 【rust】

    系列文章目录 rust 00 开发环境搭建 rust 01 编译并运行第一个rust程序 rust 02 语法基础 变量 不可变 和常量 rust 03 语法基础 数据类型 rust 04 语法基础 函数 rust 05 语法基础 流程控制
  • windows下启动nacos(单机配置)

    windows下启动nacos 下载nacos 找到github地址 并根据对应的版本进行下载 如果下载过慢的话 可以使用迅雷下载 1下载完成后 进行解压 之后打开 conf application properties文件 2 打开后 我
  • 机器学习实战——朴素贝叶斯

    目录 一 朴素贝叶斯理论 1 概述 2 朴素贝叶斯特点 3 贝叶斯决策理论 4 条件概率与全概率公式 5 贝叶斯推断 二 朴素贝叶斯分类器应用 拉普拉斯修正 三 垃圾邮件分类 一 朴素贝叶斯理论 1 概述 朴素贝叶斯算法是有监督的学习算法
  • vue3.0模板

    GitHub Mstian Vue Onepiece Admin vue3 elementPlus后台管理简单模板https github com Mstian Vue Onepiece Admin
  • null,default关键字

    一 null关键字 1 null是空的意思 在表中 默认情况下 所有的字段值都可以为空 1 建表期间 可以对某一字段进行非空约束 not null 在insert时 此字段必须要有数据 create table temo id number
  • libuv之基础

    TCP客户端连接步骤 连接方法 Uv loop t loop uv default loop uv tcp t client malloc uv connect t connect req malloc uv tcp init loop c
  • C++ 仿函数(一)

    目录 一 仿函数是什么 二 仿函数的特点 1 仿函数在使用时 可以像普通函数那样调用 可以有参数 可以有返回值 2 仿函数超出普通函数的概念 可以有自己的状态 编辑3 仿函数可以作为参数传递 三 谓词 一元谓词示例 二元谓词示例 总结 一
  • 银行股的分红是不是比利率要高,投十万银行股一年分红有多少啊?

    工农交建中目前股息均超5 以上 10万元投资银行股 一年分红收益能达到5500左右 银行一年定期存款1 5 10万存款年利息1500 买银行股比存银行一年多收益4000左右
  • dell服务器重装win10,戴尔dell重装win10系统后无法引导的解决方法(原创)

    戴尔新机型都采用 Intel 酷睿第八代以上处理器 戴尔8代以上cpu都不支持传统模式了 默认预装了win10系统不是很好用 想重新安装win10 但是预装win10的机型默认是UEFI引导 但戴尔电脑装win10后出现不能引导情况 一般出
  • OpenFeign配合logback链路追踪

    创建MDC上下文 public class MdcContext MDC上下文 存储tId private static final ThreadLocal
  • 多线程(十)多线程编程示例

    文章目录 一 交替输出1A2B3C4D5E 1 1 synchronized wait notify 1 2 Condition await signal 二 生产者 消费者问题 2 1 synchronized wait notify 2
  • java final关键字修饰局部变量,final关键字的这8个小细节,你get到几个?

    今天来聊 final 关键字 因为最近在看的几本书都讲到了 final 关键字 发现好多小细节自己都忽视了 抽空总结了一下 分享给大家 正文 final关键字是一个常用的关键字 可以修饰变量 方法 类 用来表示它修饰的类 方法和变量不可改变
  • 数据在底层的存储模式

    1 数据的存储模式 大端存储模式 常见于我们的手机等 低地址放高数据 小端存储模式 比如PC 低地址存放低数据 面试题 设计程序判断大小端 这里可以有两种方式 1 写一个函数通过数据类型 int main int a 0x11223344
  • 我的服务器开发之路-安装mysql之mariadb并更改数据库路径

    centos最好安装mariadb 输入rpm qa grep mariadb 并没有显示版本号 则说明并没有安装mariadb 输入yum remove mysql mysql server mysql libs可完全卸载mysql相关
  • K8S个人学习之路

    服务器预备环境 1 永久禁用swap空间 1 临时关闭swap分区 重启失效 swapoff a 2 永久关闭swap分区 sed ri s swap etc fstab 2 修改k8s gcr io 路径的镜像 其他的镜像仓库 MY RE
  • Spark-RDD编程

    Spark在进行计算的时候通常会包含以下几个步骤 创建SparkContext上下文对象 使用SparkContext加载数据创建RDD RDD的转换算子transfotmations RDD的行动算子actions RDD的缓存和持久化
Powered by Hwhale