RDD、DF、DS的区别与联系

RDD.DataFrame.DataSet的区别和联系

共性:

1)都是spark中得弹性分布式数据集,轻量级

2)都是惰性机制,延迟计算

3)根据内存情况,自动缓存,加快计算速度

4)都有partition分区概念

5)众多相同得算子:map flatmap 等等

区别:

1)RDD不支持SQL

2)DF每一行都是Row类型,不能直接访问字段,必须解析才行

3)DS每一行是什么类型是不一定的,在自定义了case class之后可以很自由的获 得每一行的信息

4)DataFrame与Dataset均支持spark sql的操作,比如select,group by之类,还 能注册临时表/视窗,进行sql语句操作

5)可以看出,Dataset在需要访问列中的某个字段时是非常方便的,然而,如果要 写一些适配性很强的函数时,如果使用Dataset,行的类型又不确定,可能是 各种case class,无法实现适配,这时候用DataFrame即Dataset[Row]就能比较 好的解决问题。

转化:

1)DF/DS转RDD

  1. Val Rdd = DF/DS.rdd

2) DS/RDD转DF

  1. import spark.implicits._
  2. 调用 toDF(就是把一行数据封装成row类型)

3)RDD转DS

将RDD的每一行封装成样例类,再调用toDS方法

4)DF转DS

根据row字段定义样例类,再调用asDS方法[样例类]

特别注意:

在使用一些特殊的操作时,一定要加上 import spark.implicits._ 不然toDF、toDS无法使用

原文地址:https://www.cnblogs.com/yanxun1/p/10048753.html

时间: 2024-08-05 03:31:00

RDD、DF、DS的区别与联系的相关文章

spark rdd df dataset

RDD.DataFrame.DataSet的区别和联系 共性: 1)都是spark中得弹性分布式数据集,轻量级 2)都是惰性机制,延迟计算 3)根据内存情况,自动缓存,加快计算速度 4)都有partition分区概念 5)众多相同得算子:map flatmap 等等 区别: 1)RDD不支持SQL 2)DF每一行都是Row类型,不能直接访问字段,必须解析才行 3)DS每一行是什么类型是不一定的,在自定义了case class之后可以很自由的获 得每一行的信息 4)DataFrame与Datase

du命令和df命令的区别

du命令和df命令额区别 du命令: disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的.他计算的大小就是当前他认为存在的所有文件大小的累加和. df命令: disk free,通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件, df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经

sparkSQL中RDD——DataFrame——DataSet的区别

spark中RDD.DataFrame.DataSet都是spark的数据集合抽象,RDD针对的是一个个对象,但是DF与DS中针对的是一个个Row RDD 优点: 编译时类型安全 编译时就能检查出类型错误 面向对象的编程风格 直接通过类名点的方式来操作数据 缺点: 序列化和反序列化的性能开销 无论是集群间的通信,还是IO操作都需要对对象的结构和数据进行序列化和反序列化 GC的性能开销,频繁的创建和销毁对象,势必会增加GC开销 DataFrameDataFrame引入了schema和off-hea

du 和 df命令的区别(超赞)

du和df命令都被用于获得文件系统大小的信息:df用于报告文件系统的总块数及剩余块数,du -s /<filesystem>用于报告文件系统使用的块数.但是,我们可以发现从df命令算出的文件系统使用块数的值与通过du命令得出的值是不一致的. 如下例: # du -s /tmp 返回如下值: ---12920 /tmp 而 df /tmp返回如下值: Filesystem --512-blocks-- Free --%Used --Iused-- %Iused --Mounted on /dev

RDD与DSM的区别

RDD(Resilient Distributed DataSet)弹性分布式数据集,是Spark的核心数据结构. DSM(Distributed Shared Memory)分布式共享内存,它是一种通用的内存数据抽象.在DSM中,应用可以向全局地址空间的任意位置进行读写操作. RDD与DSM主要区别在于,不仅可以通过批量转换创建(即"写")RDD,还可以对任意内存位置对写.RDD限制应用执行批量写操作,这样有利于实现有效的容错.特别是,由于RDD可以使用Lineage(血统)来恢复分

汇编_指令_CS与DS的区别

cs是值cpu执行的当前指令的段地址,ds是数据开始的段地址. CS是告诉CPU,去哪个位置找内容当成指令去执行:DS是告诉CPU,去哪个位置找内容当成数据被使用. datastring =ds codestring=cs 用到DS的例子: MOV AX,[100H] 这句指令的意思就是把地址[100H](属于数据)放入到寄存器AX里(直接寻址), 此时物理地址计算:DS*10H+100H 原文地址:https://www.cnblogs.com/chuijingjing/p/9324357.h

df 显示 100%的问题

问题: 使用 df 命令查看,某个分区使用率已经达到100%,但是用du 命令统计该分区,发现该分区空间剩余10G可用. 实例: 分析: 如果有文件在打开状态的时候被删除了,系统还是会以为这些文件还存在.所以df 仍然会当这些文件还存在并且列入统计中. 解决: # lsof | grep "deleted" 查看那些已被删除但仍被系统打开的文件,找到相对应的服务,重启.或者找到相对应的pid,kill 掉. 实例: 这里发现nginx日志文件处于这种状态,nginx日志被删除,但没有重

Spark中的RDD和DataFrame

什么是DataFrame 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格. RDD和DataFrame的区别 DataFrame与RDD的主要区别在于,DataFrame带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型.使得Spark SQL得以洞察更多的结构信息,从而对藏于DataFrame背后的数据源以及作用于DataFrame之上的变换进行了针对性的优化,最终达到大幅提升运行时效率的目标. RDD,

RDD、DataFrame和DataSet

https://blog.csdn.net/weixin_43087634/article/details/84398036 2.什么是DataFrame 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格. 3.RDD和DataFrame的区别 DataFrame与RDD的主要区别在于,DataFrame带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型.使得Spark SQL得以洞察更多的结构信息,从而对藏