DataFrame的由来 & 官网解读 & 几个重要的点

本篇文章将介绍Spark SQL中的DataFrame,关于DataFrame与RDD的区别,可以参见这篇博客:DataFrame与RDD的区别

DataFrame的由来

DataFrame是Spark SQL里面非常核心的一个类,DataFrame这个词不是Spark SQL里有的,是从其它地方借鉴过来的:在 R语言里是有DataFrame这个概念的,但是R语言是单机处理的,也就是说对于数据量大的情况是没有办法进行处理的。如果使用MapReduce/Spark Core来进行处理,需要了解编程模型,因此会带来很大的门槛,并不是所有人都能搞的定的,而R语言是简单的,但是又因为只能单机跑:

MapReduce/Spark CoreThreshold
ROne machine

两者都有限制,不能做到很好的水平的横向的扩展,基于这种情况,在Spark里面推出了DataFrame这个概念

官网解读

官网:http://spark.apache.org/docs/latest/sql-programming-guide.html#datasets-and-dataframes
官网的介绍:

  • DataSet
    一个DataSet表示的是一个分布式的集合的数据(与RDD的概念有点类似);DataSet是一个新的接口在Spark 1.6里添加的。对比RDD来说,DataSet所能带来的好处:

    • strong typing(强类型)
    • ability to use powerful lambda functions(能够提供一个强有力的lambda函数)

    上述所说的两点,是能够被Spark SQL底层的优化引擎进行优化的。一个DataSet能够从 JVM对象 中被构建出来,然 后手动的通过一些函数式的transformation(map,flatMap,filter等),一个数据集只要经过这些转换之后,就会变成另外一个数据集,这点是与RDD一样的。DataSet目前仅能够支持Scala、Java进行编程,Python它现在还不能支持DataSet的API,这是因为Python中的一些特性所决定的;R也不能支持DataSet的API

  • DataFrame
    DataFrame就是一个DataSet,被组织成带名字的列
    那么DataFrame是什么呢?从概念角度来说,我们可以理解它为在RDBMS中的一张表或者说是在R/Python中的DataFrame但是,它在底层做了更好的优化DataFrame能够被构建通过:

    • structured data files
    • tables in Hive
    • external databases,
    • existing RDDs

    将上述这些转换成DataFrame之后,我们就可以使用DataFrame中非常非常多的算子进行操作了,就很方便了
    DataFrame API支持Scala,Java,Python,R
    在Scala和Java里面,一个DataFrame代表了一个DataSet,但是它的类型是一个Row类型
    在Scala API里面,你就认为是Dataset[Row]的一个别名:DataFrame = Dataset[Row]

几个重要的点

  1. DataFrame有:
    column name 列名称
    column type 列类型
    column value 列值
    有了这些,就可以使用列名,或者各方面进行操作

  2. DataFrame == Table ==> 相当于你对DataFrame做操作,和对表做操作是一样的;底层做了很多优化的

  3. DataFrame = Dataset[Row]

  4. 提供了强有力的算子/API:
    select,filter ……

BigData:
使用dataframe api来进行开发,有种感觉自己在开发单机的应用程序,但是可以运行在spark之上
达到small data ==> distribute,从小的数据集处理,直接到分布式的处理,开发的时候是感觉不到的,为开发Spark SQL应用程序带来了非常大的方便

SchemaRDD:
Spark 1.3 版本之前是这样称呼的,之后才有的DataFrame;其实SchemaRDD不就是把一个Schema作用在RDD之上嘛,其实本质上和DataFrame没有区别

  • 在1.3版本出来了DataFrame
  • 在1.6版本出来了DataSet
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值