Spark第二课RDD的详解

这篇具有很好参考价值的文章主要介绍了Spark第二课RDD的详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.前言

RDD
JAVA中的IO

1.小知识点穿插

1. 装饰者设计模式

装饰者设计模式:本身功能不变,扩展功能.
举例: 数据流的读取
一层一层的包装,进而将功能进行进一步的扩展
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据

2.sleep和wait的区别

本质区别是字体不一样,sleep斜体,wait正常
斜体是静态方法
sleep:静态方法,和对象无关
t1.sleep 当前休眠的不是t1线程,而是调用方法的线程,如果在主线程运行,调用的就是主线程,
与对象无关,得不到对象锁
wait :成员方法 ,与对象相关
t2.wait 当前等待的线程是t2线程
能得到对象锁,能释放.

Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
空指针异常:调用一个为null的对象的成员属性或成员方法,会发生空指针异常,
注意 是成员的 ,如果是静态的,与动态就无关了.
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
为什么会出现空指针?
报错的时候,给的是.class的位置,不一定完全对应java的问题,
去看字节码Terminal 输入javap -c +名称 -v的话,更详细
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
intValue是一个成员方法,但是此时age没有赋值,是null, 空对象的成员方法调用

this与super

Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
this是当前方法的局部变量,
super只在编译时出现,this可以在运行时出现

3.关于import *

Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
这个是给javac 用的,让javac自动去找
编译成.class 时,需要什么就导什么,而不是全部都导

2.正题

1.注意点 切片与读取的不同

HADOOP切片逻辑是均分
但是读取数据进行分区保存时,不能均分,
HADOOP是按行读,而不是字节,
为啥HADOOP按行读取,一行就是一个业务数据
但是切片是均分,指的是字节均分

2.hadoop读取按照偏移量读取,同一个数据的偏移量不能被重复读取,也就是必须重来?

Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据

5+2+1+2+6 =16
4个分区,能均分
4个分区,读按行读,所以最后一个是空 数据倾斜

2.转换算子

1.是什么?

Transformation转换算子
转换方法
算子是个啥?
认知心理学 解决问题的状态: 初始状态(提出问题) -> 解决 不强调过程
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
转换:一个东西变成另外一个东西
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
所谓的转换算子,就是调用RDD对象的功能(方法)转变成一个新RDD
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据

Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
元组,需要先知道一共多少个数据, 默认元组最多为22个
元组是专门用来存放无关数据的,不同数据类型也能存
取的时候
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
如果元组中元素就两个,称为对偶元组,也称为键值对
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
RDD不保存(处理后的)数据,RDD是容器,但是容器是工具,存储数据的,是数组,链表,而不是容器
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
加这个才能将类中的方法可以进行函数式

只需要考虑方法输入输出
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
因为必须有返回值,马丁知道,所以return 可以省略
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
想省略参数,得有方法
如果一个整体需要拆分成多个个体,这种操作,叫做扁平化
Flat就是变

3.map

一个输入 一个输出 不能一个输入多个输出

package com.atguigu.core.rdd.transform;

import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;

import java.util.Arrays;
import java.util.List;

public class SparkRDDmap {
    public static void main(String[] args) {
        JavaSparkContext sc = new JavaSparkContext("local[*]","SPARK_mapT");
        List<Integer> dataList = Arrays.asList(1,2,3,4);
        JavaRDD<Integer>  rdd = sc.parallelize(dataList, 3);
        JavaRDD<Integer>  rddMap = rdd.map(in -> in * 2);
        // 用流的形式进行操作
        rddMap.collect().forEach(System.out::println);
        sc.stop();
    }
}

4.flatMap

1.flatMap与Map的区别

map:一个输入,一个输出 做不到一个输入多个输出 也做不到多个输入少个输出
flatmap 扁平化 一个输入 n个输出 n(0和任意正整数)
整体拆成个体,但是每个个体都要使用
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据

注意,这里的return 是泛型(不加也行) ,也可以是迭代器

5.分组

1.注意点 一个组的数据必定在一个分区

分组不是分区,分组是将数据按组划分,是将所有数据重新进行划分,按组成编制,
本来数据是单独放入区中的,而现在的数据,是以组为单位放入区的,而不是说一个分区里面只能有一个组,分组与分区,无关
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据

Spark的分组,一个组的数据放置在一个分区中(把之前的分区聚合了)
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
组是输出 组内数据是输入
输出 就是分组规则
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
这种写法,直接. 中间结果不会在内存中留下
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
奇偶分组,这个的组名是true false
奇偶分组,去掉==0时,组名为0 1

Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据

分组过程中,将已分组的数据先放入磁盘,分完组,重新按组分流,动态改变分区数量
Spark第二课RDD的详解,Spark,大数据,spark,eclipse,大数据
默认分区数是不变的,这里主动修改分区数,才改变的文章来源地址https://www.toymoban.com/news/detail-667247.html

到了这里,关于Spark第二课RDD的详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spark RDD编程 文件数据读写

    从本地文件系统读取数据,可以采用textFile()方法,可以为textFile()方法提供一个本地文件或目录地址,如果是一个文件地址,它会加载该文件,如果是一个目录地址,它会加载该目录下的所有文件的数据。 示例:读取一个本地文件word.txt val textFile中的textFile是变量名称,sc.t

    2024年02月05日
    浏览(42)
  • Spark核心RDD详解(设计与运行原理,分区,创建,转换,行动与持久化)

    在实际应用中,存在许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘工具,这些应用场景的共同之处是,不同计算阶段之间会重用中间结果,即一个阶段的输出结果会作为下一个阶段的输入。但是,目前的MapReduce框架都是把中间结果写入到HDFS中,带来了大量的

    2024年02月04日
    浏览(46)
  • Spark大数据分析与实战笔记(第三章 Spark RDD 弹性分布式数据集-02)

    人生很长,不必慌张。你未长大,我要担当。 传统的MapReduce虽然具有自动容错、平衡负载和可拓展性的优点,但是其最大缺点是采用非循环式的数据流模型,使得在迭代计算式要进行大量的磁盘IO操作。Spark中的RDD可以很好的解决这一缺点。 RDD是Spark提供的最重要的抽象概念

    2024年02月22日
    浏览(96)
  • 大数据开发之Spark(RDD弹性分布式数据集)

    rdd(resilient distributed dataset)叫做弹性分布式数据集,是spark中最基本的数据抽象。 代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 1.1.1 rdd类比工厂生产 1.1.2 wordcount工作流程 1、一组分区(partition),即是数据集的基本组成单位,

    2024年01月24日
    浏览(71)
  • Spark大数据处理讲课笔记--- RDD持久化机制

    理解RDD持久化的必要性 了解RDD的存储级别 学会如何查看RDD缓存 Spark中的RDD是懒加载的,只有当遇到行动算子时才会从头计算所有RDD,而且当同一个RDD被多次使用时,每次都需要重新计算一遍,这样会严重增加消耗。为了避免重复计算同一个RDD,可以将RDD进行持久化。 Spark中

    2024年02月06日
    浏览(45)
  • Spark 大数据实战:基于 RDD 的大数据处理分析

    之前笔者参加了公司内部举办的一个 Big Data Workshop,接触了一些 Spark 的皮毛,后来在工作中陆陆续续又学习了一些 Spark 的实战知识。 本文笔者从小白的视角出发,给大家普及 Spark 的应用知识。 Spark 集群是基于 Apache Spark 的分布式计算环境,用于处理 大规模数据集 的计算任

    2024年01月25日
    浏览(48)
  • 大数据课程K4——Spark的DAG&&RDD依赖关系

    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州 ⚪ 了解Spark的DAG; ⚪ 掌握Spark的RDD的依赖关系; ⚪ 了解Spark对于DAG的Stage的划分; Spark会根据用户提交的计算逻辑中的RDD的转换和动作来生成RDD之间的依赖关系,同时这个计算链也就生成了逻辑上的DAG。接下来以

    2024年02月11日
    浏览(38)
  • 大数据课程K2——Spark的RDD弹性分布式数据集

    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州 ⚪ 了解Spark的RDD结构; ⚪ 掌握Spark的RDD操作方法; ⚪ 掌握Spark的RDD常用变换方法、常用执行方法; 初学Spark时,把RDD看做是一个集合类型(类似于Array或List),用于存储数据和操作数据,但RDD和普通集合的区别

    2024年02月12日
    浏览(55)
  • Spark大数据处理学习笔记(3.1)掌握RDD的创建

    文章目录 一、准备工作 1.1 准备文件 1.1.1 准备本地系统文件 在/home目录里创建test.txt 单词用空格分隔 1.1.2 启动HDFS服务 执行命令:start-dfs.sh 1.1.3 上传文件到HDFS 将test.txt上传到HDFS的/park目录里 查看文件内容 1.2 启动Spark Shell 1.2.1 启动Spark服务 执行命令:start-all.sh 1.2.2 启动Sp

    2024年02月09日
    浏览(44)
  • Spark大数据处理学习笔记(3.2.2)掌握RDD算子

    衔接上文:http://t.csdn.cn/Z0Cfj 功能: reduce()算子按照传入的函数进行归约计算 案例: 计算1 + 2 + 3 + …+100的值 计算1 × 2 × 3 × 4 × 5 × 6 的值(阶乘 - 累乘) 计算1 2 + 2 2 + 3 2 + 4 2 + 5**2的值(先映射,后归约) 功能: collect()算子向Driver以数组形式返回数据集的所有元素。通常对

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包