您当前的位置:首页 > 计算机 > 服务器 > Apache

Shark 与 Apache Hive 的兼容性

时间:12-14来源:作者:点击数:
CDSY,CDSY.XYZ

在现有的 Hive 仓库中部署

Shark 被设计为与现有的 Hive 安装 开箱即用。在集群中部署 Shark 时,无需修改现有的 Hive Metastore 或更改表的数据放置或分区。

支持的 Hive 功能

Shark 支持绝大多数 Hive 功能,例如:

  • Hive查询语句,包括:
    • 选择
    • 通过...分组
    • ORDER_BY
    • CLUSTER_BY
    • 排序方式
  • 所有 Hive 操作员,包括:
    • 关系运算符(=、⇔、==、<>、<、>、>=、<= 等)
    • 算术运算符(+、-、*、/、% 等)
    • 逻辑运算符(AND、&&、OR、|| 等)
    • 复杂类型构造函数
    • 数学函数(符号、ln、cos 等)
    • 字符串函数(instr、length、prinf 等)
  • 用户定义函数 (UDF)
  • 用户定义的聚合函数 (UDAF)
  • 用户定义的序列化格式 (SerDe's)
  • 加入
    • 加入
    • {左|右|全}外连接
    • 左半连接
    • 交叉连接
  • 工会
  • 子查询
    • SELECT col FROM (SELECT a + b AS col from t1) t2
  • 采样
  • 解释
  • 分区表
  • 所有 Hive DDL 函数,包括:
    • 创建表
    • 创建表作为选择
    • 修改表
  • 所有 Hive 数据类型,包括:
    • 微信
    • 小情报
    • 情报局
    • 大数据
    • 布尔值
    • 漂浮
    • 双倍的
    • 细绳
    • 二进制
    • 时间戳
    • 数组<>
    • 地图<>
    • 结构<>
    • 联合类型<>

不支持的 Hive 功能

下面是我们尚不支持的 Hive 功能列表。这些功能中的绝大多数很少用于 Hive 部署。

蜂巢的主要特点

  • 带桶的表:桶是 Hive 表分区内的散列分区。鲨鱼不支持桶。

深奥的蜂巢功能

  • 具有使用不同输入格式的分区的表:在 Shark 中,所有表分区都需要具有相同的输入格式。
  • Non-equi outer join:对于使用具有非equi连接条件(例如条件“key <10”)的外部连接的不常见用例,Shark将为NULL元组输出错误结果。
  • 唯一加入
  • 单查询多插入
  • 列统计信息收集:Shark 目前不会搭载扫描来收集列统计信息。

Hive 输入/输出格式

  • CLI 的文件格式:对于显示回 CLI 的结果,Shark 仅支持 TextOutputFormat。
  • Hadoop存档

Hive 优化 Spark 中还没有包含一些 Hive 优化。由于 Shark 的内存计算模型,其中一些(例如索引)不是必需的。其他的则用于 Spark 的未来版本。

  • 块级位图索引和虚拟列(用于建立索引)
  • 自动将连接转换为映射连接:对于连接一个大表和多个小表,Hive 会自动将连接转换为映射连接。我们将在下一个版本中添加此自动转换。
  • 自动确定 join 和 groupbys 的 reducer 数量:目前在 Shark 中,您需要使用“set mapred.reduce.tasks=[num_tasks];”来控制 post-shuffle 的并行度。我们将在下一个版本中添加并行度的自动设置。
  • 仅元数据查询:对于仅使用元数据可以回答的查询,Shark 仍会启动任务来计算结果。
  • 倾斜数据标志:Shark 不遵循 Hive 中的倾斜数据标志。
  • 连接中的 STREAMTABLE 提示:Shark 不遵循 STREAMTABLE 提示。
  • 合并查询结果的多个小文件:如果结果输出包含多个小文件,Hive 可以选择性地将小文件合并为更少的大文件,以避免溢出 HDFS 元数据。鲨鱼不支持这一点。
CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐