zoukankan      html  css  js  c++  java
  • 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与Dataset均支持spark sql的操作,比如select,group by之类,还 能注册临时表/视窗,进行sql语句操作
    
    5)可以看出,Dataset在需要访问列中的某个字段时是非常方便的,然而,如果要 写一些适配性很强的函数时,如果使用Dataset,行的类型又不确定,可能是 各种case class,无法实现适配,这时候用DataFrame即Dataset[Row]就能比较 好的解决问题。
    
    转化:
    
    1)DF/DS转RDD
    
    Val Rdd = DF/DS.rdd
    2) DS/RDD转DF
    
    import spark.implicits._
    调用 toDF(就是把一行数据封装成row类型)
    3)RDD转DS
    
    将RDD的每一行封装成样例类,再调用toDS方法
    
    4)DF转DS
    
    根据row字段定义样例类,再调用asDS方法[样例类]
    
    特别注意:
    
    在使用一些特殊的操作时,一定要加上 import spark.implicits._ 不然toDF、toDS无法使用
  • 相关阅读:
    2019春招面试题总结-03
    2019春招面试题总结-02
    2019春招面试题总结-01
    Node.js 全局对象
    Node.js 路由
    Node.js 函数
    Node.js 模块系统
    Node.js Stream(流)
    Node.js Buffer(缓冲区)
    Node.js EventEmitter
  • 原文地址:https://www.cnblogs.com/yin-fei/p/10773019.html
Copyright © 2011-2022 走看看