Spark SQL 之 Migration Guide
Spark SQL 之 Migration Guide
转载请注明出处:http://www.cnblogs.com/BYRans/
Migration Guide
与Hive的兼容(Compatibility with Apache Hive)
Spark SQL与Hive Metastore、SerDes、UDFs相兼容。Spark SQL兼容Hive Metastore从0.12到1.2.1的所有版本。Spark SQL也与Hive SerDes和UDFs相兼容,当前SerDes和UDFs是基于Hive 1.2.1。
在Hive warehouse中部署Spark SQL
Spark SQL Thrift JDBC服务与Hive相兼容,在已存在的Hive上部署Spark SQL Thrift服务不需要对已存在的Hive Metastore做任何修改,也不需要对数据做任何改动。
Spark SQL支持的Hive特性
Spark SQL支持多部分的Hive特性,例如:
- Hive查询语句,包括:
- SELECT
- GROUP BY
- ORDER BY
- CLUSTER BY
- SORT BY
- 所有Hive运算符,包括
- 比较操作符(=, ⇔, ==, <>, <, >, >=, <=, etc)
- 算术运算符(+, -, *, /, %, etc)
- 逻辑运算符(AND, &&, OR, ||, etc)
- 复杂类型构造器
- 数学函数(sign,ln,cos,etc)
- 字符串函数(instr,length,printf,etc)
- 用户自定义函数(UDF)
- 用户自定义聚合函数(UDAF)
- 用户自定义序列化格式器(SerDes)
- 窗口函数
- Joins
- JOIN
- {LEFT|RIGHT|FULL} OUTER JOIN
- LEFT SEMI JOIN
- CROSS JOIN
- Unions
- 子查询
- SELECT col FROM ( SELECT a + b AS col from t1) t2
- Sampling
- Explain
- 表分区,包括动态分区插入
- 视图
- 所有的Hive DDL函数,包括:
- CREATE TABLE
- CREATE TABLE AS SELECT
- ALTER TABLE
- 大部分的Hive数据类型,包括:
- TINYINT
- SMALLINT
- INT
- BIGINT
- BOOLEAN
- FLOAT
- DOUBLE
- STRING
- BINARY
- TIMESTAMP
- DATE
- ARRAY<>
- MAP<>
- STRUCT<>
支持的Hive功能
下面是当前不支持的Hive特性,其中大部分特性在实际的Hive使用中很少用到。
Major Hive Features
- Tables with buckets:bucket是在一个Hive表分区内进行hash分区。Spark SQL当前不支持。
Esoteric Hive Features
- UNION type
- Unique join
- Column statistics collecting:当期Spark SQL不智齿列信息统计,只支持填充Hive Metastore的sizeInBytes列。
Hive Input/Output Formats
- File format for CLI: 这个功能用于在CLI显示返回结果,Spark SQL只支持TextOutputFormat
- Hadoop archive
Hive优化
部分Hive优化还没有添加到Spark中。没有添加的Hive优化(比如索引)对Spark SQL这种in-memory计算模型来说不是特别重要。下列Hive优化将在后续Spark SQL版本中慢慢添加。
- 块级别位图索引和虚拟列(用于建立索引)
- 自动检测joins和groupbys的reducer数量:当前Spark SQL中需要使用“
SET spark.sql.shuffle.partitions=[num_tasks];”控制post-shuffle的并行度,不能自动检测。 - 仅元数据查询:对于可以通过仅使用元数据就能完成的查询,当前Spark SQL还是需要启动任务来计算结果。
- 数据倾斜标记:当前Spark SQL不遵循Hive中的数据倾斜标记
- jion中STREAMTABLE提示:当前Spark SQL不遵循STREAMTABLE提示
- 查询结果为多个小文件时合并小文件:如果查询结果包含多个小文件,Hive能合并小文件为几个大文件,避免HDFS metadata溢出。当前Spark SQL不支持这个功能。
Reference
Data Types
Spark SQL和DataFrames支持的数据格式如下:
- 数值类型
- ByteType: 代表1字节有符号整数. 数值范围: -128 到 127.
- ShortType: 代表2字节有符号整数. 数值范围: -32768 到 32767.
- IntegerType: 代表4字节有符号整数. 数值范围: -2147483648 t到 2147483647.
- LongType: 代表8字节有符号整数. 数值范围: -9223372036854775808 到 9223372036854775807.
- FloatType: 代表4字节单精度浮点数。
- DoubleType: 代表8字节双精度浮点数。
- DecimalType: 表示任意精度的有符号十进制数。内部使用java.math.BigDecimal.A实现。
- BigDecimal由一个任意精度的整数非标度值和一个32位的整数组成。
- String类型
- StringType: 表示字符串值。
- Binary类型
- BinaryType: 代表字节序列值。
- Boolean类型
- BooleanType: 代表布尔值。
- Datetime类型
- TimestampType: 代表包含的年、月、日、时、分和秒的时间值
- DateType: 代表包含的年、月、日的日期值
- 复杂类型
- ArrayType(elementType, containsNull): 代表包含一系列类型为elementType的元素。如果在一个将ArrayType值的元素可以为空值,containsNull指示是否允许为空。
- MapType(keyType, valueType, valueContainsNull): 代表一系列键值对的集合。key不允许为空,valueContainsNull指示value是否允许为空
- StructType(fields): 代表带有一个StructFields(列)描述结构数据。
- StructField(name, dataType, nullable): 表示StructType中的一个字段。name表示列名、dataType表示数据类型、nullable指示是否允许为空。
Spark SQL所有的数据类型在 org.apache.spark.sql.types 包内。不同语言访问或创建数据类型方法不一样:
Scala
代码中添加import org.apache.spark.sql.types._,再进行数据类型访问或创建操作。

Java
可以使用org.apache.spark.sql.types.DataTypes中的工厂方法,如下表:

Spark SQL 之 Migration Guide的更多相关文章
- Spark SQL and DataFrame Guide(1.4.1)——之DataFrames
Spark SQL是处理结构化数据的Spark模块.它提供了DataFrames这样的编程抽象.同一时候也能够作为分布式SQL查询引擎使用. DataFrames DataFrame是一个带有列名的分 ...
- Spark SQL 1.3测试
Spark SQL 1.3 参考官方文档:Spark SQL and DataFrame Guide 概览介绍参考:平易近人.兼容并蓄——Spark SQL 1.3.0概览 DataFrame提供了一 ...
- Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN
Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...
- spark第七篇:Spark SQL, DataFrame and Dataset Guide
预览 Spark SQL是用来处理结构化数据的Spark模块.有几种与Spark SQL进行交互的方式,包括SQL和Dataset API. 本指南中的所有例子都可以在spark-shell,pysp ...
- Spark SQL 官方文档-中文翻译
Spark SQL 官方文档-中文翻译 Spark版本:Spark 1.5.2 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 Data ...
- Spark SQL官方文档阅读--待完善
1,DataFrame是一个将数据格式化为列形式的分布式容器,类似于一个关系型数据库表. 编程入口:SQLContext 2,SQLContext由SparkContext对象创建 也可创建一个功能更 ...
- What’s new for Spark SQL in Apache Spark 1.3(中英双语)
文章标题 What’s new for Spark SQL in Apache Spark 1.3 作者介绍 Michael Armbrust 文章正文 The Apache Spark 1.3 re ...
- 深入研究Spark SQL的Catalyst优化器(原创翻译)
Spark SQL是Spark最新和技术最为复杂的组件之一.它支持SQL查询和新的DataFrame API.Spark SQL的核心是Catalyst优化器,它以一种新颖的方式利用高级编程语言特性( ...
- Spark SQL中列转行(UNPIVOT)的两种方法
行列之间的互相转换是ETL中的常见需求,在Spark SQL中,行转列有内建的PIVOT函数可用,没什么特别之处.而列转行要稍微麻烦点.本文整理了2种可行的列转行方法,供参考. 本文链接:https: ...
随机推荐
- HTTP协议简解
1.什么是http协议 http协议: 浏览器客户端 与 服务器端 之间数据传输的规范 2.查看http协议的工具 1)使用火狐的firebug插件(右键->查看元素->网络) 2)使用 ...
- 关于linux下DB2创建数据库报错问题
公司业务需要,把服务搭在中标下,在中标下装了DB2 Express-C v9.7.1,之前用着没有问题,隔了一段时间没用,最近又需要用到它,出了一些菜鸟问题,记录下来以免有人和我犯同样的错误...进入 ...
- Hibernate(六)__对象的三种状态
瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象. 持久(persistent):数据库中有数据与之对应,当前 ...
- Quartz任务调度器
在使用jdk的timer时发现无法满足开发需求:即无法在指定的日期进行执行任务. 这便引入一个优秀的开源任务调度框架“quartz”. 这里加入的是quartz-1.8.6版本.Quart的官网: ...
- windows.open()、close()方法详解
windows.open()方法详解: window.open(URL,name,features,replace)用于载入指定的URL到新的或已存在的窗口中,并返回代表新窗口的Win ...
- READ TABLE ..... BINARY SEARCH问题
Read Table 的语法很多,这里说一种特殊情况,Read Table 中查询的时候对标准内表经常有一种二分优化查找,用Binary search的时候首先必须要有查询条件:但如果查询条件满足的项 ...
- ae_将面积小于1500的Feature同附近Feature进行合并
private void 合并1500图斑ToolStripMenuItem_Click(object sender, EventArgs e) { /* *将图层中面积小于1500的图斑与之相同BS ...
- spring+ibatis+多数据源
环境:spring3.1+ibatis2.3.4+oracle+hbase要求:需要在工程中操作两个不同的数据源,一个是mssql,另一个是hbase.实现: <bean id=" ...
- Microsoft Azure 的负载平衡器的Session Sticky
Microsoft Azure 的负载平衡器是一种 Layer-4负载平衡器.Microsoft Azure 负载平衡器通过针对给定输入端点上接收到的流量计算哈希函数,在一组可用的服务器(虚拟机)之间 ...
- 开发者账号续期后,itunes停止付款了
开发者账号过期后,没有及时续期,等再续期后,itunes停止付款到公司银行账户了.过了一个多月了还是没有收到itunes的付款.然后开始联系苹果客服和技术支持,他们都说只能通过itunes的“联系我们 ...