sparkSQL和DataFrame的简单介绍

sparkSQL

    1    spark中原生的RDD是没有数据结构的

    2    对RDD的变换和操作是不能采用传统的SQL方法

    3    sparkSQL应运而生并建立在shark上,伯克利实验室spark生态环境的组件之一

    4    shark最初很大程度上以来HIVE图语法解析器,查询优化器等

    5    改进的spark SQL框架摆脱了对HIVE的依赖性,所以无论在数据兼容、性能优化、组件扩展方面都是得到了极大的方便


spark SQL的优势

    1    数据兼容:数据结果集本身就是sparkRDD。spark sql可兼容HIVE,JSON和parquet等文件。并可获取RDBMS数据以及访问cassandra等NOSQL数据文件

    2    性能优化:除了采取 In-Memory Columnar Storage、byte-code generation等优化技术外、将会引进Cost Model对查询进行动态评估、获取最佳物理计划等等;

    3    组件扩展:sql的语法解析器、分析器还是优化其都重新定义进行扩展如HIVE SQL


SparkSQL运行架构

    1 对读入的SQL语句进行解析(Parse),分辨出SQL语句的关键词(如SELECT,FROM,WHERE)并判断SQL语句的合法性;

    2    将SQL语句和数据库的数据字典进行绑定(Bind)如果相关的projection(映射)、Data Source(数据源)等是存在的话,就表示这个SQL语句是可以执行的;

    3    数据库会在这个计划中选择一个最优计划(Optimize)

    4    计划执行(Execute),按照    最优计划(Optimize)>数据源(Data Source)>结果(Result) 的次序来进行的,在执行过程中有时候不需要读取物理表就可以返回结果,如重新运行刚才的SQL语句,可能直接从数据库的缓存池中获取返回结果。


实现Spark SQL

    1    产生schema RDD    :为了实现sparksql必须将一般的RDD转换成带数据结构的数据集DataFrame

    2    schema RDD本身就是一个RDD,但它本身包含是由想对象(Row    Object)组成。每个对象代表一条记录

    3    schemaRDD提供了一些新的操作引用函数是的数据操作和分析更搞笑和简洁

    4    可以将schemaRDD注册成表。这样可以用SQL访问RDD的数据了。而结果集本身也是schema RDD,即DataFrame

    5    可以用各种方法生成schemaRDD

            1)createDataFrame产生DataFrame


        2)用scparallelize产生DataFrame


    DataFrame如何转换成SQL语句

        需要注册零时表:df.registerTempTable('表名')


产生DataFrame的方法

    1    由以存在的RDD产生schemaRDD有两种方法

        1)   从行对象推出数据结构并安插到元RDD上已形成SchemaRDD即DataFrame

        2)   用编程的方法产生数据结构并用在DataFrame生成函数的参数中以形成schema RDD

     2    读入json,parquet,AVRO或CSV文件时直接读成schema RDD,这是因为这些文件本身就是带有结构的

    3    将python或R的DataFrame转换成spark中的。这些APIschemaRDD

注意:如果在DataFrame上使用SQL必须将它注册成表。当然spark DataFrame 有自己的一套数据操作和分析APIs。这些APIs类似于PYTHON pandas 中的DataFrame 方法

从行对象推出数据结构方法:



编程方法:


                    

   读入文件直接产生结构:如JSON:


其他诸如parquet、csv等只需要吧json换成相应的文件就行了。

注:python的DATAFRAME可以直接被转换成SPARK DATAFRAME


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值