有类型转换_split_ | 学习笔记

简介: 快速学习有类型转换_split_

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段有类型转换_split_】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/690/detail/12071


有类型转换_split_

 

再去了解一个类型的算子操作,叫做切分,切分,其实说了两件事,第一件事儿就是把一个数据集切为多个数据集,还有一个事情,其实说的就是如何从一个数据集当中抽出一个比较小的数据集。

image.png

接下来,进行这一个步骤:

def split(): Unit = {

val ds  =  spark.range(end =15)

//randomsplit 在 rdd 当中是没有的,这个 simple 和 rdd 的当中的稍微有一点区别,但区别其实并不大,所以我们把它放在一起来讲。那么 randomsplit 所实现的功能是什么,在 spark.range(end =15)这个当中是有 15 条元素,那么 randomsplit 就可以按照一定的权重,把你这个数据集给拆为多个数据集。那么其实,需要去控制两件事情,第一个是拆为多少数据集,切多少分,第二个问题是权重多少。

//第一个算子 randomsplit

(val datasets:Array[Dataset[lang.Long]]

=ds.randomSplit(Array(5,2,3))

datasets foreach(_.show)

//调用算子,因为 randomSplit 接收的是一个 Array ,所以把(seq(5,2,3))改为(Array(5,2,3)),这个是随机拆分的,这个 5+2+3 加倍的和可以为 1,100,100,其实都是为 1,无论怎么换算,都是以十为倍数进行换算。如果最终它的这个加倍和不能唯一的话,就会进行一个标准化的一个过程。当然也可以都无所谓啊,看大家怎么去设计。

进行一下 show,查看一下结果,这个时候发现用不了 show,因为 randomSplit 接收的类型是多个 datasets。改为:

val datasets:Array[Dataset[lang.Long]]

=ds.randomSplit(Array(5,2,3))

datasets foreach(_.show)

这个切分成了三份

//第二个算子 sample

ds. Sample(withReplacement = false, fraaction = 0.4).show

//

这个 sample 的用法与前面几乎是一致。在这个 simple 里面,同样接收两个参数,第一个是否有放回,有放回就知道这个结果集当中是否有重复,如果有放回的话,就是采一个样把它放回去下次还能采到样,这个结果集就会有重复,所以加入 withReplacement = false, fraaction = 0.4

运行程序,获取到结果了(图)

首先,第一个运行

(val datasets:Array[Dataset[lang.Long]]

=ds.randomSplit(Array(5,2,3))

datasets foreach(_.show)

会打印出来三个结果。

第二个运行

ds. Sample(withReplacement = false, fraaction = 0.4).show

会打印出来一个结果。

一共四个结果:

第一个结果是 6 条数据,它的权重为 5。

image.png

第二个结果是 5 条数据,它的权重为 2。

image.png

第三个结果是 2 条数据.

image.png

第四个结果是 4 条数据,它的权重为 3。

image.png

给的只是权重,而不是具体的数目,所以怎么去打印?怎么去生成这个数据集其实也是人家说了算,比如说当除不尽的时候,它可能不是按照严格的那个大概的比例来的。最后一个 sample,抽 0.4,取出了两条数据。

以后就是有类型转换_split_的内容。

相关文章
|
7月前
|
Java
Java 字符串分割split空字符串丢失解决方案
Java 字符串分割split空字符串丢失解决方案
|
5月前
|
语音技术
语音识别,运算符,字符串的三种成定义方式,\“转意字符的定义,字符串的拼接,TypeError: can only concatenate str (not “init “) to str是浮点数和整
语音识别,运算符,字符串的三种成定义方式,\“转意字符的定义,字符串的拼接,TypeError: can only concatenate str (not “init “) to str是浮点数和整
|
5月前
|
前端开发 JavaScript
split(分割符)字符串转换为数组,str_arr.split(‘‘)//以空字符串为分隔符,以,为分隔符str_arr.split(‘,‘)str.replace(‘1‘,‘a‘)替换1
split(分割符)字符串转换为数组,str_arr.split(‘‘)//以空字符串为分隔符,以,为分隔符str_arr.split(‘,‘)str.replace(‘1‘,‘a‘)替换1
|
7月前
|
Linux
split 的详细用法
【4月更文挑战第13天】split 的详细用法
142 9
C++11新特性探索:原始字符串字面值(raw string literal)
原始字符串字面值(raw string literal)是C++11引入的新特性。
166 0
|
Python
Python 数值类型方法|内建函数的对比汇总 (int bool float complex bytes str)
Python 数值类型方法|内建函数的对比汇总 (int bool float complex bytes str)
127 0
|
测试技术 索引 Python
介绍kfold.split()的详细用法
KFold是交叉验证中的一种方法,其可以将数据集划分为K份,然后使用其中一份作为验证集,剩下的K-1份作为训练集。这个过程可以重复K次,以便每个子集都被用作验证集。KFold.split()是KFold类中的一个方法,用于将数据集分割为K个互不重叠的子集,每个子集包含相同数量的数据点。
919 0
|
SQL 分布式计算 安全
有类型转换_map | 学习笔记
快速学习有类型转换_map
有类型转换_map | 学习笔记
|
JSON Java 数据格式
03-Random、数组、JSON格式、流程控制语句
-Random、数组、JSON格式、流程控制语句
108 0
|
Python
【Python零基础入门篇 · 2】:掌握各种运算符和变量、input()输入输出、映射函数map()结合input()和split()函数实现多值输入
【Python零基础入门篇 · 2】:掌握各种运算符和变量、input()输入输出、映射函数map()结合input()和split()函数实现多值输入
131 0
【Python零基础入门篇 · 2】:掌握各种运算符和变量、input()输入输出、映射函数map()结合input()和split()函数实现多值输入