【Spark】RDD、DataSet和DataFrame的区别

一、相同点

1. Spark下分布式弹性数据集

2. 惰性机制

Spark提供Transformation与Action两种操作类型,其中Transformation采用延迟执行的方式,在逻辑上定义了数据集的依赖关系和计算逻辑,只有等到Action才会触发真正执行操作。

3. 自动缓存运算

4. Partitions

5. DataFrame和DataSet拥有完全相同的成员函数

Dataset和DataFrame拥有完全相同的成员函数,区别只是每一行的数据类型不同,DataFrame也可以叫Dataset[Row],每一行的类型是Row,不解析,每一行究竟有哪些字段,各个字段又是什么类型都无从得知。Dataset中,每一行是什么类型是不一定的,在自定义了case class之后可以很自由的获得每一行的信息。

二、不同点

1. RDD

  • 不支持SparkSql

2. DataFrame

  • 与RDD、DataSet不同,每一行的类型固定为Row,只有通过解析才能获取各个字段的类型及其具体类型的值,如下,解析Row与构造Row,每一列的值没法直接访问
1. 解析row
testDF.foreach{
   
  line =>
    val col1=line.getAs[String]("col1")
    val col2=line.getAs[String]("col2")
}

2. 构造row
var columns: Set[Column] = Set()
for (r <- resultFieldList) {
   
   columns = columns.+(col(r))
 }
 result = result.select(columns.toList
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值