Dataset介绍_将 Dataset 转为同泛型的 RDD | 学习笔记

简介: 快速学习 Dataset介绍_将 Dataset 转为同泛型的 RDD

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段 Dataset介绍_将 Dataset 转为同泛型的 RDD】学习笔记,与课程紧密联系,让用户快速学习知识。

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


Dataset介绍_将 Dataset 转为同泛型的 RDD

 

Dataset转为同泛型的RDD

 

当说 dataset 的底层是 RDD,dataset 底层的 RDD 的其中的泛型,是 internalrow,真正运行在集群里的 dataset,其实就是一个 RDD。在工作中会碰到一个 API,这个 API 叫做 data thank 加 RDD,通过 dataset,可以直接把 dataset转为一个 RDD。

这个操作,有内部的一些逻辑,前面说,Spark spark,是一个非常弹性的工具。也就是说这个 spark 其中,你可以在一个程序里面即使用 RDD 的又使用 Data set 又使用 SQL 。

你可以使用很多种工具,在这个 spark 程序当中去进行代码的编写,有一些操作用 dataset 不方便,所以直接转成了一个 RDD 的类型,通过这个 RDD 来进行操作。大家不知道这个 RDD 的这个属性的本质,就可能会过多的去使用这个属性,导致你的代码写出来的效率比较低。

进入到笔记当中,已经有非常多的这方面的说明,直接就进入到的 idea 当中,要去改造一下刚才的这个案例。

所以,直接复制出来一个新的案例以后,要把第一个部分给改造了,现在的这个创建的方式,还是比较原始和古老的,就可以对这种方式来进行一个改变,比如,直接创建出来一个 data set,可以直接使用 spark.create data sight 来去创建。 create 的毫无疑问,直接就把这个 dataset 创建出来,会比你先搞一个 rdd,再通过 DS 去转更好了

image.png

把前面的数组拷过来,这个 dataset 算是创建完成了。刚说了 query execution to rdd 的返回的一个类型是 rdd 的,其中是 Interalrow,这个 RDD 的作用就是 dataset 底层在集群当中去运行的那个物理计划的 rdd 。

如果是这样的话,还有一个 API,叫做 dataset,to.rdd 通过这个 API,他返回的这个数据类型,就叫做 typedrdd。这个 RDD 它是一个什么类型呢?

把他加上发现这个 rdd 的类型还是 person er,这个 data set 的类型也是 person,所以这个 RDD 和这个的 sight 的泛型是一样的。这个 rdd 和 to rdd 的之间有什么区别。

image.png

可以先去运行一下,Print ln,然后去打印 executionrdd.to debug string to debug string 这样一个 API,查看这个 RDD 的执行步骤。如果是这样的话,也可以去查看一下 tapped rdd,它的这个 to debug string 是什么样子的。

再多打印两个 print ln,然后,让它俩之间的打印分隔。然后运行代码,当的代码已经运行完成了,注意到这一段日志,是前面这个 two deduction,也就是execution,通过 query execution.toRDD 得到了。

TORDD 是通过 RDD 直接转换得来的,这个 RDD 有很多个这个职称的步骤,起码比上面多了两个。

就直接为的这两个 API 下一个结论,前面这个 query execution rdd 是直接获取到已经分析和解析过的 data set 的执行计划,从中拿到 RDD。下面的这一个API是通过将的这个 data set 底层的 rdd[Internalrow]通过 decocer 转成和 datadest 一样的 rdd.

image.png

两个方法明显是有很大区别的,一个是直接从底层的执行计划当中,拿它底层的那个 rdd,而另外一个通过 execution rdd,再将它其中的转成 rdd。

保持和 dataset 的类型一致,这两个API明显是不同的.但是这个 rdd 经常会使用,假如说这个 dataset 有一些 API 使用起来并 rdd,直接通过它来进行相应的操作。但是,你再通过这个 rdd 来转成 rdd 的时候,一定要小心操作,他会对其进行一个隐藏。

相关文章
|
Java
报错:java: 不兼容的类型: java.lang.String无法转换为int解决办法
这里遇到的问题是在scanner键盘输入时候进行了一个报错:java: 不兼容的类型: java.lang.String无法转换为int
2229 1
报错:java: 不兼容的类型: java.lang.String无法转换为int解决办法
|
SQL 分布式计算 安全
Dataset 和 DataFrame 的区别_区别 | 学习笔记
快速学习 Dataset 和 DataFrame 的区别_区别
792 0
Dataset 和 DataFrame 的区别_区别 | 学习笔记
|
11月前
|
缓存 分布式计算 资源调度
Spark 与 MapReduce 的 Shuffle 的区别?
MapReduce 和 Spark 在 Shuffle 过程中有显著区别。MapReduce 采用两阶段模型,中间数据写入磁盘,I/O 开销大;而 Spark 使用基于内存的多阶段执行模型,支持操作合并和内存缓存,减少 I/O。Spark 的 RDD 转换优化减少了 Shuffle 次数,提升了性能。此外,Spark 通过 lineage 实现容错,资源管理更灵活,整体大数据处理效率更高。
|
SQL Kubernetes 流计算
实时计算 Flink版产品使用问题之如何在Windows上运行
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
Java API 数据安全/隐私保护
获取HTTP请求参数的方法详解
获取HTTP请求参数的方法详解
|
SQL 分布式计算 Java
Spark中的DataFrame和Dataset有什么区别?请解释其概念和用途。
Spark中的DataFrame和Dataset有什么区别?请解释其概念和用途。
588 0
|
安全 Unix Linux
【C/C++ 字符串】探索C语言之字符串分割函数:strtok和strsep的区别
【C/C++ 字符串】探索C语言之字符串分割函数:strtok和strsep的区别
624 0
|
分布式计算 Hadoop 网络安全
Hadoop学习笔记(HDP)-Part.04 基础环境配置
本文为HDP集群部署系列教程,涵盖从环境准备到组件安装的完整流程。包括SSH免密登录、Ansible自动化配置、主机名与hosts设置、基础软件安装、防火墙与SELinux关闭、NTP时钟同步及磁盘分区挂载等关键步骤,为后续Ambari与大数据组件部署打下坚实基础。
245 0
|
前端开发 NoSQL JavaScript
RAP2-DELOS 开源社区版本 (后端 API 服务器)
RAP2-DELOS 开源社区版本 (后端 API 服务器)
653 0
|
安全 Java Linux
CentOS8 Elasticsearch8.x 安装遇到的问题解决汇总
CentOS8 Elasticsearch8.x 安装遇到的问题解决汇总
960 0
CentOS8 Elasticsearch8.x 安装遇到的问题解决汇总