• spark学习进度18——SparkSQL


    Spark SQL是Spark用于结构化数据处理的Spark模块

    作用:

    SparkSQL是Spark用来处理结构化数据 [json,csv,Excel, MySQL] 的一个模块,它提供了一个编程抽象叫做DataFrame / DataSet。

    如果想使用SparkSQL处理文本数据或者非结构化数据怎么办? 需要将文本数据转换成结构化数据。 RDD----->DataFrame 

    特点:

    1-容易整合: 

         可以使用java、scala、python、R等语言的API操作。

    2-统一的数据访问方式:

         连接到任何数据源的方式相同。

    3-兼容hive  

         支持hiveSQL的语法。兼容hive(元数据库、SQL语法、UDF、序列化、反序列化机制)

    4-标准的数据连接: 

        可以使用行业标准的JDBC或ODBC连接。

    RDD与DataFrame区别:

    Dataframe就是带有schema的RDD.

    1-数据结构:

       

    2-编程API

     RDD的操作基于spark中的算子,而Dataframe中提供了专门操作表的API:例如:select from where.... 这样的好处是处理数据的逻辑更简单,不需要向操作RDD的时候考虑需要什么样的算子,只要写出sqL语句,那么 Spark-SQL底层会根据我们的业务使用性能最优的算子。 

    Dataframe和DataSet的区别:

    RDD类似,DataFrame也是一个分布式数据容器。然而DataFrame更像传统数据库的二维表格,除了数据以外,还记录数据的结构信息,即schema。同时,与Hive类似,DataFrame也支持嵌套数据类型(struct、array和map)。从API易用性的角度上看,DataFrame API提供的是一套高层的关系操作,比函数式的RDD API要更加友好,门槛更低。由于与R和Pandas的DataFrame类似,Spark DataFrame很好地继承了传统单机数据分析的开发体验。

    1.Dataframe API的一个扩展,是Spark最新的数据抽象。

    2.用户友好的API风格,既具有类型安全检查也具有Dataframe的查询优化特性。

    3.Dataset支持编解码器,当需要访问非堆上的数据时可以避免反序列化整个对象,提高了效率。

    4.样例类被用来在Dataset中定义数据的结构信息,样例类中每个属性的名称直接映射到DataSet中的字段名称。

    5.Dataframe是Dataset的特列,DataFrame=Dataset[Row] ,所以可以通过as方法将Dataframe转换为Dataset。Row是一个类型,跟Car、Person这些的类型一样,所有的表结构信息都用Row来表示。

    6.DataSet是强类型的。比如可以有Dataset[Car],Dataset[Person].

  • 相关阅读:
    知识点总结(基础篇)
    从FBV到CBV三(权限)
    从FBV到CBV二(认证器)
    kubeDNS workflow(service registration and discovery)
    从FBV到CBV一(开始)
    pycharm的python console报错CE.app/Contents/helpers/pydev/_pydev_bundle/pydev_ipython_console_011.py", line 87, in init self.matchers.remove(self.python_matches) ValueError: list.remove(x): x not in list
    删除none 的images报错 image has dependent child images 解决办法
    缓存的应用场景以及要注意的问题
    epoll—IO多路复用
    docker 容器启动后立马退出的解决方法
  • 原文地址:https://www.cnblogs.com/znjy/p/15819629.html
Copyright © 2020-2023  润新知