`
功夫小当家
  • 浏览: 186400 次
  • 性别: 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-3.1.2.tgz & spark-3.1.2-bin-hadoop2.7.tgz.rar

    - Spark SQL:用于处理结构化数据,支持SQL查询和DataFrame/Dataset操作。 - Spark Streaming:处理实时数据流,通过微批次处理实现高吞吐量和低延迟。 - MLlib:机器学习库,包含多种算法和实用工具。 - GraphX...

    spark-2.4.8-bin-hadoop2.7.tgz

    2. **Spark SQL**:支持结构化和半结构化数据处理,可以与Hive、Parquet、JSON等多种数据源进行交互,同时提供了DataFrame和Dataset API,使得SQL和DataFrame/Dataset之间的转换更为方便。 3. **Spark Streaming**:...

    spark-2.3.1-bin-hadoop2.7.zip

    2. **Spark SQL**:Spark SQL允许用户使用SQL或者DataFrame/Dataset API来处理结构化和半结构化数据。它与Hive兼容,可以无缝地读取Hive表并进行查询。 3. **Spark Streaming**:提供了一个高级抽象来处理实时数据流...

    spark-3.1.3-bin-without-hadoop.tgz

    Spark SQL提供了一种SQL接口来操作数据,使得开发人员能够利用熟悉的SQL语法进行数据分析,同时支持DataFrame和Dataset API,增强了类型安全性和性能。 Spark Streaming则构建在RDD之上,通过微批处理实现对实时...

    spark-3.2.4-bin-hadoop3.2-scala2.13 安装包

    8. **生态系统**: Spark的生态非常丰富,包括DataFrame/Dataset API、Spark SQL、Spark Streaming、GraphX(图计算)、MLlib(机器学习库)和SparkR(R语言接口)。这些组件可以组合使用,满足各种大数据处理需求。 ...

    spark-2.2.2-bin-hadoop2.7.tgz

    此外,它内置了Spark SQL模块,用于执行SQL查询,同时支持DataFrame和Dataset操作,以及Spark Streaming用于实时数据处理。 在这个压缩包中,"spark-2.2.2-bin-hadoop2.7"目录下会包含以下关键组件: 1. `bin`:...

    spark-3.0.0-bin-hadoop2.7.tgz

    Spark SQL是Spark用于结构化数据处理的模块,它允许用户通过SQL或者DataFrame/Dataset API进行交互式查询。Spark SQL支持多种数据源,如HDFS、Cassandra、Hive等,并且能够无缝集成在Spark的其他组件中。 3. **...

    spark-3.2.0-bin-hadoop3.2.tgz

    1. **性能优化**:Spark 3.2.0进一步提升了处理速度,尤其是在DataFrame/Dataset操作上。引入了Tungsten项目的优化,包括代码生成和列式存储,以减少数据处理的开销。 2. **SQL增强**:Spark SQL的性能得到了显著...

    spark-3.2.1-bin-hadoop2.7.tgz

    2. Spark SQL:提供了SQL接口和DataFrame/Dataset API,使得开发人员可以方便地进行结构化和半结构化数据处理。 3. Spark Streaming:支持实时流数据处理,利用微批处理实现低延迟的数据处理。 4. MLlib:机器学习库...

    spark-3.1.3-bin-hadoop3.2.tgz

    2. SQL增强:Spark SQL支持多种数据源,包括Hive、Parquet、JSON等,并且提供了DataFrame和Dataset API,使得结构化和半结构化数据处理更加方便。3.1.3版本可能引入了新的SQL功能或提升了查询性能。 3. 流处理改进...

    spark-3.2.0-bin-hadoop3-without-hive

    总结来说,“spark-3.2.0-bin-hadoop3-without-hive”是一个专注于 Spark 与 Hadoop 3 基础集成的版本,它提供了最新的 Spark 特性,如优化的 SQL 引擎和 DataFrame API,同时也兼容 Hadoop 3 的诸多改进。...

    spark-3.2.1 安装包 下载 hadoop3.2

    在Spark 3.2.1中,还包含了DataFrame和Dataset API,这是基于Scala、Java、Python和R的高级数据处理接口。DataFrame API提供了SQL-like查询的能力,而Dataset API则提供了强类型和面向对象的编程模型,使数据处理...

    spark-2.3.1-bin-hadoop2.7.rar

    2. **Spark SQL**:Spark SQL允许用户通过SQL或DataFrame/Dataset API对结构化数据进行处理。它与Hive兼容,可以处理Hive表,并将SQL查询转换为Spark作业。 3. **Spark Streaming**:Spark Streaming处理实时数据流...

    spark-2.3.4-bin-hadoop2.7.tgz

    Spark 2.3.4引入了一些重要的改进,例如增强的DataFrame/Dataset API,对Kubernetes的支持,以及更高效的 Shuffle 操作。这些改进不仅提高了性能,也使得Spark更加适合于大规模分布式计算环境。 总的来说,"spark-...

    spark-2.4.7-bin-without-hadoop

    在2.4.7版本中,它优化了内存管理,提升了计算性能,增强了SQL查询能力,并且对DataFrame和Dataset API进行了进一步完善,使其更加易用和高效。 Spark 2.4.7 的一大亮点是其DataFrame和Dataset API。DataFrame 提供...

    spark-2.2.0-bin-hadoop2.6.tgz

    2. **DataFrame和Dataset API**:DataFrame是Spark SQL的核心,它提供了统一的数据操作接口。在2.2.0版本中,DataFrame API更加成熟,支持更多类型的转换和操作。而Dataset API是DataFrame的类型安全版本,它结合了...

    spark-2.4.0-bin-hadoop2.6.tgz

    6. **Spark SQL**:Spark 2.4.0引入了DataFrame和Dataset API,使得Spark支持SQL查询。用户可以通过Spark SQL模块直接对DataFrame进行SQL操作,或者通过SparkSession注册DataFrame为临时表后执行SQL。 7. **性能...

    spark-2.3.0-bin-hadoop2.7版本.zip

    5. **Spark SQL**:Spark SQL是Spark用于处理结构化数据的组件,它将SQL查询与DataFrame API相结合,提供了统一的接口,使得开发人员能够方便地在SQL和函数式编程之间切换。 6. **Spark Streaming**:Spark ...

    spark-2.3.4-bin-hadoop2.6.tgz

    2. **Spark SQL**:Spark SQL允许开发者使用SQL或DataFrame/Dataset API来处理结构化数据,同时支持Hive查询语言,方便Hadoop生态系统内的数据处理。 3. **Spark Streaming**:提供了对实时数据流处理的支持,通过微...

    spark-2.4.4-bin-hadoop2.6.tgz

    - **Spark SQL**:提供SQL和DataFrame/Dataset API,用于结构化和半结构化数据处理,与Hive兼容。 - **Spark Streaming**:处理连续数据流,通过微批处理实现高吞吐量和低延迟。 - **MLlib**:机器学习库,包含...

Global site tag (gtag.js) - Google Analytics