• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
戈瑾
博客园    首页    新随笔    联系   管理    订阅  订阅
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].

 

posted on 2022-01-18 20:17  戈瑾  阅读(38)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3