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无法使用
  • 相关阅读:
    Tushare模块
    关于上下文
    Flask的session使用
    Flask的请求处理机制
    Tomcat启动报错:SERVER: Error ListenerStart 排查过程记录
    Extjs中设置只读的样式问题
    Extjs中获取getEl获取undefined的问题
    【转载】使用SoapUI 测试Web Service
    PLSQL快捷键设置
    PLSQL配置数据库的方式
  • 原文地址:https://www.cnblogs.com/yin-fei/p/10773019.html
Copyright © 2011-2022 走看看