Spark 的抽象数据集

spark的抽象数据集包括RDD、DataFrame、Dataset,其实就是三种API,理一下这几个东西的异同,适用场景。

RDD

首先RDD是spark最早提供给开发者的一种API,RDD即 Resilient Distributed Datase 弹性分布式数据集,意味着RDD的数据是分布在不同的机器上的,一台机器即一个分区。

通过map等算子,可以在每台机器上对数据做相同的操作;通过reduce等算子,可以将不同机器上的数据重新洗牌进行一个聚合,这个过程叫做shuffle,其间会发生机器之间数据传输,所以是比较消耗资源的;还有可以通过collect等算子将数据拉到driver端,driver端即提交任务的机器,所以有collect算子时是要注意driver端内存分配的。

另外,需要知道的是RDD是不可变的,我们对rdd操作的算子不是修改rdd的数据,而是把一个RDD转化为另一个RDD。

DataFrame

DataFrame和RDD其实是类似的东西,不同的是DataFrame支持SparkSQL,这就意味着DataFrame里面的是结构化数据,但是DataFrame的字段类型约束不是严格的,它每一行的类型为row,所以每一列的值无法直接访问,还需要解析,来看下面两个例子:

1.row对象可以直接通过getA

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值