sparkSQL

Posted wangshuang123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sparkSQL相关的知识,希望对你有一定的参考价值。

1.spark SQL简介

官网:http://spark.apache.org/

Spark SQLSpark用来处理结构化数据的一个模块,它提供了一个编程对象,叫DataFrame并且作为分布式SQL查询引擎的作用

 

2.为什么要学习spark SQL

 

2.1 我们已经学习了Hive,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性

 

2.2 MapReduce这种计算模型效率慢,代码繁碎,很多开发者都习惯使用sql,所以Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快,而且Spark SQL也支持从Hive中读取数据

3.spark SQL特点

技术图片

 

3.1 集成 3.2 同意的访问方式 3.3hive集成 3.4标准连接

 

4.DataFrame的概念

(1)DataFram是组成命名列的数据集,它在概念上等同于关系数据库中的表,,但在底层具有更丰富的优化

 

2DataFrame可以从各种来源构建,列如:结构化数据文件, hive中的表,外部数据库或现有RDD

 

3DataFrame  API支持的语言有ScalaJavaPythonR

 

 技术图片

 

4)从上图可以看出,DataFrame多了数据的结构信息,schema创建DataFrame的一种方式,后边详细介绍),RDD是分布式的 Java对象的集合

 

 

5DataFrame是分布式的Row对象的集合,DataFrame除了提供了比RDD更丰富的算子以外,更重要的特点是提升执行效率、减少数据读取以及执行计划的优化

 

 val row = lines.map ( _.split ( "," )).map ( tp => Row (  tp ( 0 ).toInt, tp ( 1 ), tp ( 2 ), tp ( 3 ), tp ( 4 ).toDouble, tp ( 5 ).toDouble, tp ( 6 ).toInt ))

 

 val frame: DataFrame = unit.map(tp=>
      val splits=tp.split(" ")
      val id=splits(0).toInt
      val name=splits(1)
      val age=splits(2).toInt
      val result=splits(3).toInt
      (id,name,age,result)
    ).toDF("id","name","age","address")

 

 

5.DataSet的概念

 

1Dataset是数据的分布式集合,Dataset是在Spark 1.6中添加的一个新接口,是DataFrame之上更高一级的抽象

 

2Dataset提供了RDD的优点(强类型化,使用强大的lambda函数的能力)以及Spark SQL优化后的执行引擎的优点

 

3)一个Dataset 可以从JVM对象构造,然后使用函数转换(mapflatMapfilter等)去操作

 

4Dataset API 支持ScalaJavaPython不支持Dataset API

 

 

 

 

以上是关于sparkSQL的主要内容,如果未能解决你的问题,请参考以下文章

Spark SQL 介绍

Spark SQL

寒假第十天

Spark学习 Spark SQL

Spark SQL知识点大全与实战

大数据高级开发工程师——Spark学习笔记