首页 > 编程知识 正文

SparkSql是什么,postGREsql

时间:2023-05-03 12:45:19 阅读:163507 作者:2911

目录(SparkSql )本质(某事) (说得明白) )作用) )说得明白) ) SparkSql是core、catalyst、hive、 hive-thriftserver4 1.Catalyst运行优化程序UDFUDAF开窗函数的优缺点((我正在尝试了解) ) (优缺点流程) )如何工作) ) ) ) ) ) 使用目录保存元数据使用Antlr生成未绑定的逻辑计划使用Analyzer绑定逻辑计划使用Optimizer优化逻辑计划使用SparkPlanner生成可执行的物理计划6 .尝试理解在执行物理计划中常用(一定) (我试图理解) (以创建数据帧的方式保存有关数据帧的目标源的常见问题) (一定)我试图理解) RDD和

本质(某事) )我试图理解) )

SparkSql的官方网站是:http://spark.Apache.org/SQL /

sparkSql是spark on hive的基于内存的交互式查询APP服务。

spark负责引擎的优化、执行。 hive负责存储

sparkSql的基础是DataFrame (可以理解为具有数据、列模式信息的二维表) )。

角色(做什么) )讲得很清楚) hive :通过将hivesql转换为mr,mr查询的复杂性会降低,但很慢!

使spark脱离hive,不依赖hive的分析优化

sparkSql用于处理结构化的模块。 提供抽象数据集DataFrame作为分布式Sql查询引擎的APP表示。

体系结构(到底有什么) ) Spark SQL由四个部分组成:核心、类别、主机、主机和主机服务器4。 core:处理数据输入和输出,从不同数据源(如RDD、Parquet文件和JSON文件)检索数据,并将结果查询结果输出到数据帧。

catalyst:负责处理查询语句的整个过程,包括分析、绑定、优化和物理计划的生成。

hive:负责处理hive数据。

hive-thrift server :提供客户端和JDBC/ODBC等接口。

sparksql查询优化程序是catalyst,它负责分析、绑定、优化查询语句和生成物理执行计划等过程。 catalyst是sparksql最中心的部分。

sparkSql是spark Core上面的模块,sql最终通过Catalyst翻译成类似的spark程序代码并在spark Core中运行。 过程中还有job、stage和task的概念

1.catalystexecutionoptimizer 1.1 catalyst最重要的数据结构是树,所有SQL语句都以树结构存储,树中的每个节点都有一个类和0或更多个子节点。 在Scala中定义的所有新节点类型都是名为TreeNode的类的子类,这些对象保持不变。

1.2 Catalyst的另一个重要概念是规则,基本上所有优化都是基于规则的。

1.3运行流程

1分析阶段

分析逻辑树并解决引用

使用Catalyst规则和Catalog对象跟踪所有数据源中的表,并解决所有未知属性

2逻辑优化

3物理规划

Catalyst生成许多计划,并根据成本进行比较

接受逻辑计划作为输入,生产一个或多个物理计划

4代码生成

将Spark SQL代码编译为Java字节码

UDF user defined function,用户定义函数

使用方法:

java:sqlContext.udf ().register (" strlen ",new UDF1String,Integer ) )最多提供22个并行接口以实现相应的UDFXX接口

udafuserdefinedaggregatefunction,用户定义的聚合函数

count,avg,sum,min,max…特点:多对一,select name,count(* ) from table group by name

是一个聚合函数(UserDefinedAggregateFunction ) )是实现八种方法的三个最重要的方法

初始化

更新

梅尔盖

开窗函数的优缺点(我试图理解) )优点语义一致性

统一的数据存取方式

hive兼容

提供集成的数据连接方法(JDBC/ODBC )

缺点流程(如何工作) (我正在试图理解) ) Sql执行流程

1 .语法和字句分析:对写入的sql语句进行字句和句法分析(parse ),分辨sql语句以什么为关键词(select,from,wh等)

ere),哪些是表达式,哪些是projection ,哪些是datasource等,判断SQL语法是否规范,并形成逻辑计划。

2 .绑定:将SQL语句和数据库的数据字典(列,表,视图等)进行绑定(bind),如果相关的projection和datasource等都在的话,则表示这个SQL语句是可以执行的。

3 .优化(optimize):一般的数据库会提供几个执行计划,这些计划一般都有运行统计数据,数据库会在这些计划中选择一个最优计划。

4 .执行(execute):执行前面的步骤获取最有执行计划,返回查询的数据集。

sparkSql 运行原理分析 1.使用SesstionCatalog保存元数据

在解析sql语句前需要初始化sqlcontext,它定义sparksql上下文,在输入sql语句前会加载SesstionCatalog,初始化sqlcontext时会把元数据保存在SesstionCatalog中,包括库名,表名,字段,字段类型等。这些数据将在解析未绑定的逻辑计划上使用。

2.使用Antlr生成未绑定的逻辑计划

Spark2.0版本起使用Antlr进行词法和语法解析,Antlr会构建一个按照关键字生成的语法树,也就是生成的未绑定的逻辑计划。

3.使用Analyzer绑定逻辑计划

在这个阶段Analyzer 使用Analysis Rules,结合SessionCatalog元数据,对未绑定的逻辑计划进行解析,生成已绑定的逻辑计划。

4.使用Optimizer优化逻辑计划

Opetimize(优化器)的实现和处理方式同Analyzer类似,在该类中定义一系列Rule,利用这些Rule对逻辑计划和Expression进行迭代处理,达到树的节点的合并和优化。

5.使用SparkPlanner生成可执行计划的物理计划

SparkPlanner使用Planning Strategies对优化的逻辑计划进行转化,生成可执行的物理计划。

6.使用QueryExecution执行物理计划 常用(必会)(我在试着讲明白) 创建DataFrame的方式 读取json格式的文件读取json格式的RDD 、DataSet读取RDD创建DataFrame读取parquet格式数据加载DataFrame读取Mysql找那个的数据加载成DataFrame读取Hive中数据加载DataFrame 保存DataFrame的目标源 parquet文件Mysql表中Hive表中 常见问题(必知)(我在试着讲明白) RDD和DataFrame的区别

配置 Spark on Hive

配置 Spark on Hive
1.在客户端 …/conf/中创建hive-site.xml,让SparkSQL找到Hive原数据

<configuration><property><name>hive.metastore.uris</name><value>thrift://node1:9083</value></property></configuration>

2.在Hive的服务端启动metaStore 服务 : hive --service metastore &
3.使用spark-shell 测试 速度

异议

有差错或者需要补充的地方,还望大家评论指出,并详细论证,相互学习,共同进步哈!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。