Spark第二课RDD的详解

news2025/1/11 5:52:22

1.前言

RDD
JAVA中的IO

1.小知识点穿插

1. 装饰者设计模式

装饰者设计模式:本身功能不变,扩展功能.
举例: 数据流的读取
一层一层的包装,进而将功能进行进一步的扩展
在这里插入图片描述

2.sleep和wait的区别

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

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

this与super

在这里插入图片描述
在这里插入图片描述
this是当前方法的局部变量,
super只在编译时出现,this可以在运行时出现

3.关于import *

在这里插入图片描述
这个是给javac 用的,让javac自动去找
编译成.class 时,需要什么就导什么,而不是全部都导

2.正题

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

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

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

在这里插入图片描述

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

2.转换算子

1.是什么?

Transformation转换算子
转换方法
算子是个啥?
认知心理学 解决问题的状态: 初始状态(提出问题) -> 解决 不强调过程
在这里插入图片描述
转换:一个东西变成另外一个东西
在这里插入图片描述
所谓的转换算子,就是调用RDD对象的功能(方法)转变成一个新RDD
在这里插入图片描述

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

只需要考虑方法输入输出
在这里插入图片描述
在这里插入图片描述
因为必须有返回值,马丁知道,所以return 可以省略
在这里插入图片描述
想省略参数,得有方法
如果一个整体需要拆分成多个个体,这种操作,叫做扁平化
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和任意正整数)
整体拆成个体,但是每个个体都要使用
在这里插入图片描述
在这里插入图片描述

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

5.分组

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

分组不是分区,分组是将数据按组划分,是将所有数据重新进行划分,按组成编制,
本来数据是单独放入区中的,而现在的数据,是以组为单位放入区的,而不是说一个分区里面只能有一个组,分组与分区,无关
在这里插入图片描述

Spark的分组,一个组的数据放置在一个分区中(把之前的分区聚合了)
在这里插入图片描述
组是输出 组内数据是输入
输出 就是分组规则
在这里插入图片描述
这种写法,直接. 中间结果不会在内存中留下
在这里插入图片描述
奇偶分组,这个的组名是true false
奇偶分组,去掉==0时,组名为0 1

在这里插入图片描述

分组过程中,将已分组的数据先放入磁盘,分完组,重新按组分流,动态改变分区数量
在这里插入图片描述
默认分区数是不变的,这里主动修改分区数,才改变的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学 容斥原理

全都是mn-1&#xff0c;下图都写成m-n-1了&#xff0c;没有脑子o(╥﹏╥)o 题目链接&#xff1a;214. Devu和鲜花 - AcWing题库 #include <bits/stdc.h> #define ll long long using namespace std; const int mod 1e97; ll A[25]; ll Pow(ll a, ll k){ll ans 1;while…

538页21万字数字政府智慧政务大数据云平台项目建设方案WORD

导读&#xff1a;原文《538页21万字数字政府智慧政务大数据云平台项目建设方案WORD》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 根据业务的不同属性&#xff0c…

爱校对:公文材料的新时代伙伴

在这个数字化、智能化日益增强的新时代&#xff0c;公文材料处理方式也在发生着巨大的变化。传统的人工校对方式逐渐被智能化的工具所替代&#xff0c;而在这其中&#xff0c;爱校对正以其卓越的性能和便捷的使用体验&#xff0c;崭露头角&#xff0c;成为公文材料处理的新时代…

利用高级定时器产生PWM

这个图中阐述了利用高级定时器产生PWM的原理&#xff0c;其中 ARR是自动重装载寄存器(TIMx_ARR)的值 CNT是定时器计数器当前的值 CCRx是捕获/比较寄存器 x(TIMx_CCRx)的值 每经过一次定时器时钟周期就会1&#xff0c;通过设置定时器的输出模式&#xff0c;可以实现&#xff0c…

编译工具:CMake(四)|安装目标文件、普通文件、脚本、目录

编译工具&#xff1a;CMake&#xff08;四&#xff09;|安装目标文件、普通文件、脚本、目录 如何安装目标文件的安装普通文件的安装&#xff1a;非目标文件的可执行程序安装(比如脚本之类)目录的安装 如何安装 安装的需要有两种&#xff0c;一种是从代码编译后直接 make inst…

【C++11保姆级教程】新的函数声明(trailing return type)、右值引用(rvalue references)

文章目录 前言一、新的函数声明&#xff08;trailing return type&#xff09;1.1新的函数声明&#xff08;trailing return type&#xff09;概念1.2新的函数声明的使用 二、右值引用&#xff08;rvalue references&#xff09;2.1右值引用&#xff08;rvalue references&…

[机器学习]特征工程:特征降维

特征降维 1、简介 特征降维是指通过减少特征空间中的维度&#xff0c;将高维数据映射到一个低维子空间的过程。 在机器学习和数据分析中&#xff0c;特征降维可以帮助减少数据的复杂性、降低计算成本、提高模型性能和可解释性&#xff0c;以及解决维度灾难等问题。特征降维通…

机器学习知识点总结:什么是EM(最大期望值算法)

什么是EM(最大期望值算法) 在现实生活中&#xff0c;苹果百分百是苹果&#xff0c;梨百分白是梨。 生活中还有很多事物是概率分布&#xff0c;比如有多少人结了婚&#xff0c;又有多少人有工作&#xff0c; 如果我们想要调查人群中吸大麻者的比例呢&#xff1f;敏感问题很难得…

实战项目:基于主从Reactor模型实现高并发服务器

项目完整代码仿mudou库one thread one loop式并发服务器实现: 仿muduo库One Thread One Loop式主从Reactor模型实现⾼并发服务器&#xff1a;通过模拟实现的⾼并发服务器组件&#xff0c;可以简洁快速的完成⼀个⾼性能的服务器搭建。并且&#xff0c;通过组件内提供的不同应⽤层…

更新arm的linux编译工具链

虑到目前arm的gcc 5.5的工具链对C17语法支持不足&#xff0c;需要升级下工具链。 以下是详细步骤。使用官方提供的工具链 ARM官方的工具链网站&#xff1a; https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads bare-metal这个版本就是没有操作系统(裸机环…

如何利用Simulation模拟零件受到的冲击力

线性静力载荷作用过程是恒定的&#xff0c;不随时间变化&#xff1b;单冲击力载荷作用的时间很短&#xff0c;高速高能量&#xff1b;今天给大家分享的是Simulation怎么模拟零件受到冲击力。 DEMO案例介绍&#xff1a;板材规格250X120X10&#xff0c;在板材的中心Φ5的区域受冲…

时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 MATLAB实现基…

【T3】畅捷通T3凭证预览/打印摘要和凭证中看到的摘要不一样。

【问题描述】 畅捷通T3软件中&#xff0c; 凭证打印预览以及打印出来的效果和直接在凭证界面看到的该凭证摘要不一致。 【解决方法】 执行下述清除凭证摘要特殊字符和空格的语句后&#xff0c;重新预览打印。 update GL_accvouch set cdigestREPLACE(cdigest,CHAR(9),) whe…

找pr剪辑素材就上这6个网站,免费可商用。

视频剪辑没素材&#xff0c;就上这几个网站找&#xff0c;免费、付费、商用素材全都有&#xff0c;最重要的是高清、4K无水印&#xff0c;赶紧马住了。 潮点视频 https://shipin520.com/?from_code2510 潮点视频是一个提供优质高清、无水印的视频素材网站&#xff0c;站内有大…

javaScript:数组方法(增删/提取类/截取/操作方法等)

目录 一.数组的增删方法 1.push()数组末尾添加元素 解释 代码 运行截图 2.unshift()向数组的头部添加数组 解释 代码 运行截图 3.pop()数组的尾部删除一个元素 解释 代码 运行截图 4.shift()数组的头部删除一个元素 解释 代码 运行截图 5. splice()任意位…

2003-2022年高铁站开通时间

2003-2022年高铁站开通时间 1、时间区间&#xff1a;2003-2022年 2、指标如下&#xff1a;高铁站名称、开通时间、所在省份、所在城市、所属线路名称、以及相关备注 指标说明&#xff1a;Hsrwsnm[高铁站名称]-高铁站名称 Optm[开通时间]-高铁站开通的时间 Prvn[所在省份]-高…

《Go 语言第一课》课程学习笔记(一)

配好环境&#xff1a;选择一种最适合你的 Go 安装方法 选择 Go 版本 一般情况下&#xff0c;建议采用最新版本。因为 Go 团队发布的 Go 语言稳定版本的平均质量一直是很高的&#xff0c;少有影响使用的重大 bug。可以根据不同实际项目需要或开源社区的情况使用不同的版本。 有…

【Web 表单】与用户数据打交道-2(mdn笔记)

8. UI 伪类 8.1 都有什么样的伪类&#xff1f; 我们可以使用的&#xff08;截至 CSS 2.1&#xff09;与表单相关的原始伪类是&#xff1a; :hover&#xff1a;只在鼠标指针悬停在一个元素上时选择该元素。:focus&#xff1a;只在元素被聚焦时选择该元素&#xff08;也就是说&am…

绘制 PCA 双标图和碎石图

1、双标图 import numpy as np import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler from sklearn import datasets# data np.random.random((1000,10)) # y np.random.randint(0,6,1000)iris datase…

C# WPF 无焦点自动获取USB 二维码扫码枪内容,包含中文

C# WPF 无焦点自动获取USB 二维码扫码枪内容&#xff0c;包含中文 前言项目背景 需要预知的知识实现方案第一步 安装键盘钩子第二步 获取输入的值第3 步 解决中文乱码问题分析解决思路工具函数 结束 前言 USB接口的扫码枪基本就相当于一个电脑外设&#xff0c;等同于一个快速输…