Spark SQL
Spark SQL
威少SOS
改变从这里开始
展开
-
Spark SQL的前世今生
目录 一:顺序图谱 二:为什么有Hive,Shark,Spark SQL等一类的组件? (1)Hive (2)Shark (3)Spark SQL 三:Spark SQL的性能优化技术详解 1、内存列存储(in-memory columnar storage) 2、字节码生成技术(byte-code generation) 3、Scala代码编写的优化 一:顺序图谱 ...原创 2019-06-07 00:09:46 · 628 阅读 · 0 评论 -
Spark SQL之工作原理剖析以及性能优化
目录 一:Spark Sql 的执行流程 二:Spark SQL之优化 三:待解决问题 一:Spark Sql 的执行流程 1、SqlParse(SQL语句) MySQL,Oracle,Hive等,都首先生成一条SQL语句的执行计划 2、Analyser(分析仪) 解析后的逻辑计划: 例如: from table students = > filter => sele...原创 2019-06-23 23:21:19 · 334 阅读 · 0 评论 -
Spark SQL之Hive数据源实战
目录 一:HiveContext与SQLContext的区别 二:使用Spark SQL操作Hive 三:DataFrame的saveAsTable命令 四:查询分数大于80分的学生的完整信息 一:HiveContext与SQLContext的区别 HiveContext继承自SQLContext,但是增加了在Hive元数据库中查找表,以及用HiveQL语法编写SQL的功能 二:使...原创 2019-06-18 19:31:30 · 611 阅读 · 1 评论 -
Spark SQL之核心源码分析
目录 一:DataFrame lazy特性 二:HiveContext.sql() SQL起始 三:SQLContext.executeSql() 正式执行 四:Spark SQL 具体转换解析分析 一:DataFrame lazy特性 //在用户拿到了封装的 Unresolved LogicalPlan的DataFrame之后 //执行一些 show(),select()...原创 2019-06-26 15:46:35 · 1651 阅读 · 0 评论 -
Spark SQL 的SQL处理引擎分析
目录 一.补充以Sql Server 为例,SQL语句的执行逻辑顺序 1、From阶段 2、Where 阶段 3、Group By 4、Having 5、Select 6、Order By 7、SQL 流程示意图 二:Sqlparser:sql –> unresolved logical plan 三:Analyzer:Unresolved logical plan...原创 2019-06-26 15:39:32 · 1107 阅读 · 0 评论 -
Spark Sql之UDAF自定义聚合函数
一:UDAF含义 UDAF:User Defined Aggregate Function。用户自定义聚合函数 对比UDF: UDF,其实更多的是针对单行输入,返回一个输出 UDAF,则可以针对多行输入,进行聚合计算,返回一个输出 二:关于UDAF的一个误区 我们可能下意识的认为UDAF是需要和group by一起使用的,实际上UDAF可以跟group by一起使用,也可以不跟gro...原创 2019-06-23 00:02:20 · 1425 阅读 · 0 评论 -
Spark SQL之 UDF自定义函数实战
目录 一:UDF含义 二:使用scala/java 创建的方法直接使用在Hive SQL 中 三:代码 一:UDF含义 UDF:(User Defined Function)用户自定义函数 二:使用scala/java 创建的方法直接使用在Hive SQL 中 作用:真正的把SQL的脚本操作方法与高级语言的方法贯通 三:代码 SCALA:实战 def main(ar...原创 2019-06-21 19:36:48 · 1146 阅读 · 0 评论 -
Spark SQL之JSON数据源操作实战
目录 一:sqlContext依据JSON文件创建DataFrame的文件格式限定 二:DataFrame的元数据指哪些? 三:元数据的定义 四:实战>查询成绩为80分以上的学生的基本信息与成绩信息 一:sqlContext依据JSON文件创建DataFrame的文件格式限定 限定:每行都必须,也只能包含一个,单独的,自包含的,有效的JSON对象。不能让一个JSON对象分...原创 2019-06-17 17:33:53 · 386 阅读 · 0 评论 -
数据源Parquet之使用编程方式加载数据
目录 一:列式存储和行式存储相比有哪些优势呢? 1、可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量。 2、压缩编码可以降低磁盘存储空间 3、只读取需要的列,支持向量运算,能够获取更好的扫描性能。 二:使用编程的方式加载Parquet文件中的数据。 JAVA版本: SCALA版本:补 英 ['pɑːkɪ; 'pɑːkeɪ] n. 镶木地板;剧场正厅座位;(法)检查机关 ...原创 2019-06-11 20:04:52 · 2608 阅读 · 1 评论 -
Parquet数据源之合并元数据
目录 一:为什么需要合并元数据? 二:scala代码 三:结果展示:(图片) 一:为什么需要合并元数据? 作用:类似于关系型数据库表的联表查询 特点:同样的影响效率 二:scala代码 def main(args: Array[String]): Unit = { val conf = new SparkConf() .setAppName("P...原创 2019-06-16 22:50:32 · 494 阅读 · 0 评论 -
Spark SQL 之开窗函数
目录 一:开窗函数 二:row_number()开窗函数实战 三:开窗函数与一般函数使用的区别? 一:开窗函数 开窗函数的由来: 在开窗函数出现之前存在着非常多用 SQL 语句非常难解决的问题,非常多都要通过复杂的相关子查询或者存储过程来完毕。为了解决这些问题,在2003年ISO SQL标准增加了开窗函数,开窗函数的使用使得这些经典的难题能够被轻松的解决。眼下在 MSSQLSe...原创 2019-06-20 19:08:39 · 3822 阅读 · 1 评论 -
Spark SQL之使用反射方式将RDD转换为DataFrame
目录 一:情景 二:与动态相比的差异 三:疑问:为何无法自动判断类型? 四:代码示例 1.JAVA版本: 2.SCALA版本: 一:情景 这种基于反射的方式,代码比较简洁,当你已经知道你的RDD的元数据时,是一种非常不错的方式。 二:与动态相比的差异 字段的名称,类型的动态获取(本质上都是要事先知晓,而不是程序自动判断) 三:疑问:为何无法自动判断类型? 数据不...原创 2019-06-10 19:43:10 · 410 阅读 · 0 评论 -
Spark SQL之Parquet数据源之自动分区推断
目录 一:分区列的值 二:表分区是如何达到优化效果? 三:怎么增加目录数据 四:传递Parquet文件到对应的分区目录中 五:自动推断用户数据的性别和国家 六:Parquet自动推断的好处 七:怎么设置 Spark SQL 是否自动判断分区的数据类型 一:分区列的值 在一个分区表中,不同分区的数据通常存储在不同的目录中,分区列的值通常就包含在了分区目录的目录名中 二:表...原创 2019-06-15 23:02:36 · 492 阅读 · 0 评论 -
Spark SQL之通用的load和save操作
一:Spark SQL的DataFrame的共同操作 load操作主要用于加载数据,创建出DataFrame; save操作,主要用于将DataFrame中的数据保存到文件中 例子: DataFrame df = sqlContext.read().load("users.parquet"); df.select("name", "favorite_color").write().save(...原创 2019-06-14 21:09:02 · 581 阅读 · 0 评论 -
Spark SQL之内置函数
目录 一:DataFrame的内置函数作用 二:DataFram的的内置函数等 三:案例实战 四:混合函数 一:DataFrame的内置函数作用 DataFrame的函数并会执行后立即返回一个结果值,而是返回一个Column对象,用于在并行作业中进行求值 Column可以用在DataFrame的操作之中,比如select,filter,groupBy等。函数的输入值,也可以是C...原创 2019-06-19 17:26:29 · 789 阅读 · 0 评论 -
Spark SQL之DataFrame的使用
目录 一:spark sql作用 二:DataFrame 三:SQLContext与HiveContext 四:创建DataFrame以及常用方法 一:spark sql作用 Spark SQL是Spark中的一个模块 主要用于进行结构化数据的处理,作为分布式的SQL查询引擎 二:DataFrame 1.DataFrame的作用: 是Spark SQL提供的最核心的编程抽...原创 2019-06-09 20:53:33 · 3093 阅读 · 0 评论 -
Spark SQL之RDD与DataFrame进行转换
一:为什么要将RDD转换为DataFrame? 可以直接针对HDFS等任何可以构建为RDD的数据,使用Spark SQL进行SQL查询 二:方案 1.反射: 是使用反射来推断包含了特定数据类型的RDD的元数据。这种基于反射的方式,代码比较简洁,当你已经知道你的RDD的元数据时,是一种非常不错的方式。 2.动态: 是通过编程接口来创建DataFrame,你可以在程序运行时动态构...原创 2019-06-09 01:15:11 · 325 阅读 · 0 评论 -
Spark SQL之延伸Hive On Spark
目录 一:Spark SQL 与 Hive On Spark的区别 二:Hive的基本工作原理 三:Hive On Spark的计算原理 四:Hive On Spark的优化点 五:RPC了解 一:Spark SQL 与 Hive On Spark的区别 Spark SQL是Spark是Spark的一个项目。 研发出来的针对各种数据源,包括Hive、JSON、Parqu...原创 2019-06-24 22:58:44 · 363 阅读 · 0 评论