Spark SQL 之 Migration Guide


支持的Hive功能

转载请注明出处: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的更多相关文章

  1. Spark SQL and DataFrame Guide(1.4.1)——之DataFrames

    Spark SQL是处理结构化数据的Spark模块.它提供了DataFrames这样的编程抽象.同一时候也能够作为分布式SQL查询引擎使用. DataFrames DataFrame是一个带有列名的分 ...

  2. Spark SQL 1.3测试

    Spark SQL 1.3 参考官方文档:Spark SQL and DataFrame Guide 概览介绍参考:平易近人.兼容并蓄——Spark SQL 1.3.0概览 DataFrame提供了一 ...

  3. Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

    Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...

  4. spark第七篇:Spark SQL, DataFrame and Dataset Guide

    预览 Spark SQL是用来处理结构化数据的Spark模块.有几种与Spark SQL进行交互的方式,包括SQL和Dataset API. 本指南中的所有例子都可以在spark-shell,pysp ...

  5. Spark SQL 官方文档-中文翻译

    Spark SQL 官方文档-中文翻译 Spark版本:Spark 1.5.2 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 Data ...

  6. Spark SQL官方文档阅读--待完善

    1,DataFrame是一个将数据格式化为列形式的分布式容器,类似于一个关系型数据库表. 编程入口:SQLContext 2,SQLContext由SparkContext对象创建 也可创建一个功能更 ...

  7. 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 ...

  8. 深入研究Spark SQL的Catalyst优化器(原创翻译)

    Spark SQL是Spark最新和技术最为复杂的组件之一.它支持SQL查询和新的DataFrame API.Spark SQL的核心是Catalyst优化器,它以一种新颖的方式利用高级编程语言特性( ...

  9. Spark SQL中列转行(UNPIVOT)的两种方法

    行列之间的互相转换是ETL中的常见需求,在Spark SQL中,行转列有内建的PIVOT函数可用,没什么特别之处.而列转行要稍微麻烦点.本文整理了2种可行的列转行方法,供参考. 本文链接:https: ...

随机推荐

  1. Oracle数据库,序列、索引、视图

    一.序列:生成自动增长(或减少)的整数值 Sequences中新建 调取: th_test.nextval 获取下一个值 th_test. currval获取当前值 二.视图:在物理表的基础上定义的虚 ...

  2. C++转换构造函数与类型转换构造函数

    转换构造函数: 转换构造函数的只有一个形参: Student(float s) { score = s; age = ; } 如果已经在上面定义了构造函数: Student(); //建立对象c1,由 ...

  3. selenium + python自动化测试环境搭建

    selenium的在python平台的搭建: 搭建平台windows 准备工具如下: --------------------------------------------------------- ...

  4. Several ports (8080, 8009) required by Tomcat v6.0 Server at localhost are already in use.

    遇到这个问题似然重启是个办法,但是真心好累.. 1.在dos下,输入  netstat   -ano|findstr  8080 //说明:查看占用8080端口的进程 显示占用端口的进程 2.在任务管 ...

  5. Xdebug文档(一)基本特性

    基本属性(参数) xdebug.default_enable 类型: boolean,默认值: 1 这是xdebug的基本设置,默认在调试跟踪时显示错误信息.可以使用xdebug_disable()函 ...

  6. Bootstrap源码分析之transition、affix

    一.Transition(过滤) 作为一个基础支持的组件,被其他组件多次引用.实现根据浏览器支持transition的能力,然后绑定动画的结束事件:首先:创建一个Element:然后:迭代查看此元素支 ...

  7. Glide.js:响应式 & 触摸友好的 jQuery 滑块插件

    Glide.js 是一款响应式和对触摸友好的 jQuery 滑块.基于 CSS3 转换实现,并在低版本浏览器降级处理.Glide.js 简单,重量轻,快速,适用于智能手机,平板电脑和台式机.它支持 s ...

  8. EasyDropDown – 很棒的下拉菜单,含精美主题

    EasyDropDown 是一个 jQuery 插件,你可以毫不费力地将简陋的 Select 元素设置为可定制风格的下拉菜单,用于表单或者一般的导航.和著名的下拉插件 Chosen 很像,但是具有自己 ...

  9. Wami Map Project – 开源的 OSM API 服务

    Wami 地图项目把 OSM 数据分享给所有的人,很容易使用.他们利用 MongoDB 的潜力进行大数据管理来实现从 OSM 数据来源搜索相关的数据.它们的 API 使人们有可能检索不同格式的 POI ...

  10. SAP ABAP将大数据量排序后输入到内表

    要向内表读入3百50万条数据,如果一次读入就会产生运行错误,错误提示为,没有内存对于扩展 内表. 我考虑使用SELECT...INTO TABLE...PACKAGE SIZE 和ENDSELECT来 ...