欢迎关注Hadoop、Spark、Flink、Hive、Hbase、Flume等大数据资料分享微信公共账号:iteblog_hadoop
  1. 文章总数:978
  2. 浏览总数:11,952,905
  3. 评论:3936
  4. 分类目录:106 个
  5. 注册用户数:6116
  6. 最后更新:2018年12月15日
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
iteblog_hadoop
大数据技术博客公众号bigdata_ai
大数据猿:
bigdata_ai

Shark对Hive的兼容性总结

  Shark是一种分布式SQL查询工具,它的设计目标就是兼容Hive,今天就来总结一下Shark对Hive特性的兼容。
  一、Shark可以直接部署在Hive的数据仓库上。支持Hive的绝大多数特性,具体如下:

  1. Hive查询语句,包括以下:
    • SELECT
    • GROUP_BY
    • ORDER_BY
    • CLUSTER_BY
    • SORT_BY
  2. 支持Hive中所有的操作符:
    • 关系运算符(=, ⇔, ==, <>, <, >, >=, <=, 等)
    • 算术运算符(+, -, *, /, %, 等)
    • 逻辑运算符(AND, &&, OR, ||, 等)
    • 复杂类型构造器
    • 数学函数 (sign, ln, cos, 等)
    • 字符串函数(instr, length, prinf, 等)
  3. 支持用户自定义函数(UDF)
  4. 支持用户自定义聚合函数(UDAF)
  5. 支持用户自定义的序列化格式(SerDe’s)
  6. 支持Joins
    • JOIN
    • {LEFT|RIGHT|FULL} OUTER JOIN
    • LEFT SEMI JOIN
    • CROSS JOIN
  7. 支持Unions
  8. 支持子查询
    • SELECT col FROM ( SELECT a + b AS col from t1) t2
  9. 支持抽样(Sampling)
  10. 支持Explain
  11. 支持分区表
  12. 支持Hive中所有的DDL函数
    • CREATE TABLE
    • CREATE TABLE AS SELECT
    • ALTER TABLE
  13. 支持Hive中所有的数据类型:
    • TINYINT
    • SMALLINT
    • INT
    • BIGINT
    • BOOLEAN
    • FLOAT
    • DOUBLE
    • STRING
    • BINARY
    • TIMESTAMP
    • ARRAY<>
    • MAP<>
    • STRUCT<>
    • UNIONTYPE<>

  二、下面是不支持的特性

  下面列出来的Hive特性在Shark是不支持的;当然,这些特性在Hive开发中也不经常使用。

  1. Shark不支持Hive中的桶(buckets)
  2. 在Hive中,不同的分区可以用不同的input format,目前在Shark中,所有的分区必须使用相同的input format
  3. 不等值的outer join("key < 10"),在Shark中将会得到错误的结果
  4. 不支持Unique join
  5. 不支持单查询多插入语句
  6. 不支持列统计收集
  7. 不支持Hadoop archive
  8. 对于返回到CLI界面的结果信息,Shark目前只支持TextOutputFormat
  9. 少数的Hive优化目前Shark是不支持的。这些不支持的优化中有些是因为Shark是内存计算模型,所以这些优化(比如索引)就没必要去支持;其他的一些优化特性将在Shark未来版本中支持。
本博客文章除特别声明,全部都是原创!
转载本文请加上:转载自过往记忆(https://www.iteblog.com/)
本文链接: 【Shark对Hive的兼容性总结】(https://www.iteblog.com/archives/1025.html)
喜欢 (4)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!