`
功夫小当家
  • 浏览: 183758 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spark - Spark-sql, DataFrame,DataSet名词解释

阅读更多

1.什么是spark-sql?

  • spark-sql 不是sql,它是spark提供的处理结构化数据的框架,不仅仅是一个sql框架,还支持DataFrame和DataSet
  • hive on spark 是hive提供的以spark作为计算引擎的计算框架,类似的框架还有hive on tez, mr等,hive1.1版本开始提供的,目前不是稳定版本

2.DataFrame

  • DataFrame是一个分布式集合,其中数据被组织为命名的列。它概念上等价于关系数据库中的表,但底层做了更多的优化。DataFrame可以从很多数据源构建,比如:已经存在的RDD、结构化文件、外部数据库、Hive表。
  • DataFrame的前身是SchemaRDD,从Spark 1.3.0开始SchemaRDD更名为DataFrame。与SchemaRDD的主要区别是:DataFrame不再直接继承自RDD,而是自己实现了RDD的绝大多数功能。你仍旧可以在DataFrame上调用.rdd方法将其转换为一个RDD。RDD可看作是分布式的对象的集合,Spark并不知道对象的详细模式信息,DataFrame可看作是分布式的Row对象的集合,其提供了由列组成的详细模式信息,使得Spark SQL可以进行某些形式的执行优化。
  • 支持scala,java,python,R;
  • 在java和scala中DataFrame = DataSet[Row];
  • DataFrame和普通的RDD的逻辑框架区别如下所示:

 

    二者对比:

  • DataFrame有shcema (所以是shcemaRDD)
  • DataFrame用了压缩 + 列式存储
  • DataFrame不仅比RDD有更加丰富的算子,更重要的是它可以进行执行计划优化(得益于Catalyst SQL解析器),另外Tungsten项目给DataFrame的执行效率带来了很大提升(不过Tungsten优化也可能在后续开发中加入到RDD API中)。
  • 但是在有些情况下RDD可以表达的逻辑用DataFrame无法表达,所以后续提出了Dataset API,Dataset结合了RDD和DataFrame的好处。

3.DataSet

  • 分布式数据集,scala和java支持的较好,python支持的一般(慎用)
  • Dataset是Spark 1.6新添加的一个实验性接口,其目的是想结合RDD的好处(强类型(这意味着可以在编译时进行类型安全检查)、可以使用强大的lambda函数)和Spark SQL的优化执行引擎的好处。可以从JVM对象构造出Dataset,然后使用类似于RDD的函数式转换算子(map/flatMap/filter等)对其进行操作。
  • Dataset通过Encoder实现了自定义的序列化格式,使得某些操作可以在无需解序列化的情况下直接进行。另外Dataset还进行了包括Tungsten优化在内的很多性能方面的优化。
  • 实际上Dataset是包含了DataFrame的功能的,这样二者就出现了很大的冗余,故Spark 2.0将二者统一:保留Dataset API,把DataFrame表示为Dataset[Row],即Dataset的子集。

4.spark sql 架构图:

根据架构图可知,任何语言的dataframe的同一个操作,底层的性能都一样,因为都转成logic plan

而rdd的操作是直接作用在jvm上执行,没有logic plan,所以不同语言底层的性能会有些差异


 

 

5.spark三大愿景

  • write less code
  • read less data
  • les the optimizer to do hard work
  • 大小: 4 KB
  • 大小: 89.5 KB
0
0
分享到:
评论

相关推荐

    spark rdd api dataframe 以及dataframe rdd dataset 相互转换 spark sql

    包括spara rdd api,dataframe action操作、查询操作、join操作,dataframe rdd dataset 相互转换以及spark sql。

    spark-scala-examples:该项目以Scala语言提供了Apache Spark SQL,RDD,DataFrame和Dataset示例

    有关该项目中存在的所有Spark SQL,RDD,DataFrame和Dataset示例的说明,请访问 。所有这些示例均以Scala语言编码并在我们的开发环境中进行了测试。目录(Scala中的Spark示例)Spark RDD示例火花蓄能器介绍将Spark ...

    learning-spark-streaming

    你可以在Spark SQL上引擎上使用DataSet/DataFrame API处理流数据的聚集,事件窗口,和流与批次的连接操作等。最后Structured Streaming 系统快速,稳定,端到端的恰好一次保证,支持容错的处理。

    spark商业实战三部曲

    1.2 通过DataFrame和DataSet实战电影点评系统... 7 1.2.1 通过DataFrame实战电影点评系统案例... 7 1.2.2 通过DataSet实战电影点评系统案例... 1.3 Spark 2.2源码阅读环境搭建及源码阅读体验... 11 第2章 Spark...

    spark介绍及分析.docx

    spark Apache Spark(简称Spark... - DataFrame和Dataset是Spark 2.0之后引入的抽象概念,提供了更高层次的API,类似于传统数据库中的表格。它们支持结构化数据的处理和查询。 4. **Spark SQL:** - Spark SQL提供了

    Spark 2.0.2 Spark 2.2 中文文档 本资源为网页,不是PDF

    无类型 Dataset 操作(aka DataFrame 操作) 以编程的方式运行 SQL 查询 创建 Dataset RDD 的互操作性 数据源 通用的 Load/Save 函数 Parquet文件 JSON Datasets Hive 表 JDBC 连接其它数据库 故障排除 ...

    Spark SQL源码概览.pdf

    Spark SQL Core 封装 Catalyst,向应用程序提供 SparkSession、Dataset、 DataFrame 等 API(DataFrame 是 Dataset[Row]的别名);Spark SQL Hive 则提供操作 Hive 的 接口。本文主要关注查询执行过程,不涉及 ...

    Mastering Spark for Data Science

    Discover advanced programming techniques using RDD and the DataFrame and Dataset APIs Find out how Spark can be used as a universal ingestion engine tool and as a web scraper Practice the ...

    Spark 编程基础(Scala 版)-机房上机实验指南

    Spark核心API:深入讲解Spark的核心API,包括RDD(弹性分布式数据集)、DataFrame、Dataset以及Spark SQL等。 数据处理与转换:通过实例演示如何使用Spark进行数据的创建、转换、操作和行动(如map、filter、reduce...

    价值上万的视频教程互联网程序开发+大数据+Hadoop、hive、Spark

    lg大数据高薪训练营 HBase、 Java9 、Java10 、MySQL优化 、JVM原理 、JUC多线程、 CDH版Hadoop Impala、 Flume 、Sqoop、 Azkaban、 Oozie、 HUE、 ...Spark SQL · SparkSQL · DataFrame · DataSet · 自定义

    Spark分布式内存计算框架视频教程

    11.分布式SQL引擎(spakr-sql和Spark ThriftServer) 12.Catalyst 优化器 第四章、离线综合实战 1.综合实战概述(需求、调研、业务) 2.环境搭建(大数据环境和应用开发环境) 3.项目初始化(工具类和属性文件) 4....

    Spark Structured Streaming

    Spark Structured Streaming 一、概述 ...简单来说Spark Structured ...我们依然可以使用Spark SQL的Dataset/DataFrame API操作处理流数据(操作方式类似于Spark SQL的批数据处理); 默认情况下,Spark Structured Strea

    niuxinzan.github.io:数据帧,数据集,RDD的Spark演示

    Dataset 是分布式数据集, dataset的API是在spark 1.6版本中添加地,它的初衷是为了提升RDD(强类型限制, 可以使用lambda函数)优化SQL执行引擎。Dataset是JVM中的一个对象,可以作用于其它操作(map,faltMap, ...

    java实现数据同步源码-BigData-In-Practice:大数据实践项目Hadoop、Spark、Kafka、Hbase、Flink

    java实现数据同步源码 BigData-In-Practice 大数据项目仓库、涉及 Hadoop、Spark、Kafka、Hbase..... ...样例,关于HiveContext、SQLContext、SparkSession、RDD、DataFrame、Dataset的使用 Zookeeper

    IT十八掌课程-徐培成-大数据-配套PPT

    '[IT18掌www.it18zhang.com]005.Ubuntu目录与权限.pptx' '[IT18掌www.it18zhang.com]018.Hadoop MapReduce初识.pptx' '[IT18掌www.it18zhang.com]Spark SQL DataFrame Dataset编程指南.pptx' '[IT18掌...

    3.dataframe使用1

    1. spark sql 是用于操作结构化数据的程序包 2. Dataset :是一个分布式的数据集合 4. 在 spark 2.0 之后, SQLContex

    【大数据】SparkSql连接查询中的谓词下推处理(一)

    SparkSql是架构在Spark计算框架之上的分布式Sql引擎,使用DataFrame和DataSet承载结构化和半结构化数据来实现数据复杂查询处理,提供的DSL 可以直 接使用scala语言完成Sql查询,同时也使用thriftserver提供服务化的...

    Chapter 4:结构化API预览1

    1. 写出正确的 DataFrame/Dataset/SQL 代码 2. 如果代码没错,spark会把它转化为逻辑执计划 3. spark 将逻辑计划进优化,并

    javashuffle源码-DigAndBuried:挖坑与填坑

    SQL是Spark内部最核心以及社区最为活跃的组件,也是未来Spark对End-User最好的接口,支持SQL语句和类RDD的Dataset/DataFrame接口。相比在传统的RDD上进行开发,Spark SQL的业务逻辑在执行前和执行过程中都有相应的...

    用户画像-算法实例KNN

    import org.apache.spark.ml....import org.apache.spark.sql.{DataFrame, Dataset, SparkSession} object KnnDemo { def main(args: Array[String]): Unit = { val spark: SparkSession = SparkUtil.getSparkSes

Global site tag (gtag.js) - Google Analytics