页面树结构

2017-07-25 Apache Spark 2.2.0 官方文档中文版发布 : http://spark.apachecn.org/docs/cn/2.2.0/


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

Spark SQL 在设计时就考虑到了和 Hive metastoreSerDes 以及 UDF 之间的兼容性。目前 Hive SerDesUDF 都是基于Hive 1.2.1版本,并且Spark SQL 可以连接到不同版本的Hive metastore(从 0.12.0 1.2.1,可以参考[与不同版本的Hive Metastore交互])

在现有的 Hive 仓库中部署

Spark SQL Thrift JDBC server 采用了开箱即用的设计以兼容已有的 Hive 安装版本。你不需要修改现有的 Hive Metastore , 或者改变数据的位置和表的分区。

支持 Hive 的特性

Spark SQL 支持绝大部分的 Hive 功能,如 :  

  • Hive 查询语句, 包括 :
    • SELECT 
    • GROUP BY 
    • ORDER BY 
    • CLUSTER BY 
    • SORT BY 
  • 所有的Hive运算符, 包括 :
    • 关系运算符 (=, ⇔, ==, <>, <, >, >=, <=, etc) 
    • 算术运算符 (+, -, *, /, %, etc) 
    • 逻辑运算符 (AND, &&, OR, ||, etc) 
    • 复杂类型构造器 - 数学函数 (sign, ln, cos等) 
    • String 函数 (instr, length, printf等) 
  • 用户自定义函数(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 
  • 采样 
  • 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部署中这些功能大部分都用不到。

Hive 核心功能

bucket : bucketHive 表分区内的一个哈希分区,Spark SQL目前还不支持 bucket

Hive 高级功能
  • UNION 类型
  • Unique join
  • 列统计数据收集 : Spark SQL目前不依赖扫描来收集列统计数据并且仅支持填充 Hive metastoresizeInBytes 字段。
Hive 输入输出格式
  • CLI文件格式 : 对于回显到CLI中的结果,Spark SQL仅支持TextOutputFormat
  • Hadoop archive
Hive 优化

有少数 Hive 优化还没有包含在 Spark 中。其中一些(比如索引)由于 Spark SQL 的这种内存计算模型而显得不那么重要。另外一些在 Spark SQL 未来的版本中会持续跟踪。

  • 块级别位图索引和虚拟列(用来建索引)
  • 自动为 joingroupBy 计算 reducer 个数 : 目前在 Spark SQL 中,你需要使用 ”SET spark.sql.shuffle.partitions=[num_tasks];” 
  • 来控制后置混洗的并行程度。 
  • 仅查询元数据 : 对于只需要使用元数据的查询请求,Spark SQL仍需要启动任务来计算结果。
  • 数据倾斜标志 : Spark SQL 不遵循 Hive 中的数据倾斜标志
  • STREAMTABLE join操作提示 : Spark SQL 不遵循 STREAMTABLE 提示。 
  • 对于查询结果合并多个小文件 : 如果返回的结果有很多小文件,Hive 有个选项设置,来合并小文件,以避免超过HDFS的文件数额度限制。Spark SQL 不支持这个。

2 评论

  1. Le-Mon 发表:

    文章有些小标题错误=。=看起来不对

    那伊抹微笑

    1. 那伊抹微笑 发表:

      嗯嗯,我检查一下,蟹蟹!←_←