码迷,mamicode.com
首页 > 其他好文 > 详细

RDD、DF、DS的区别与联系

时间:2018-12-01 13:01:39      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:注册   弹性   行数据   就是   cas   ali   联系   转化   数据   

RDD.DataFrame.DataSet的区别和联系

共性:

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

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

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

4)都有partition分区概念

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

区别:

1)RDD不支持SQL

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

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

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

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

转化:

1)DF/DSRDD

  1. Val Rdd = DF/DS.rdd

2) DS/RDDDF

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

3RDDDS

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

4)DFDS

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

特别注意:

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

RDD、DF、DS的区别与联系

标签:注册   弹性   行数据   就是   cas   ali   联系   转化   数据   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!