apache-hive / 3.1.1 / reference / Roadmap.html

要添加的功能

在添加到下面的列表之前,请检查JIRA以查看是否已打开该功能的票证。如果没有,请在Hive JIRA上打开票证,并更新以下列表。

最近的主要变化

Current Projects

抢夺

优先级表示为 P0> P1> ...

Query Optimization

  • P0优化 JOIN,然后优化 GROUP BY

  • 许多分析查询都是 JOIN,后跟 GROUP BY(联接键和 group by 键可能相同或不相同或相关)。我们需要针对此类查询进行更好的优化(优化 MapReduce 作业数量与优化数据传输大小等)

  • P0使用 Bloom 过滤器优化 JOIN

  • 这是为了优化连接两个大表但结果很小的情况。

  • P1列级统计

  • 我们已经有了用于百分位,直方图等的 UDAF。我们需要找到一种聪明的方法来以流方式(在/将扫描/加载数据过程中存回/存回)来计算列级(近似)统计信息,而无需触发新查询。

  • P1确定是否对分组依据中不同的计数使用偏斜

  • 在实际查询之前,需要列级统计信息或示例任务。

  • P1利用 Importing 数据中的聚类信息

  • 一些数据是使用“ GROUP BY”,“ CLUSTER BY”,“ ORDER BY”等生成的,它们在数据中隐式排序。我们应该利用此元数据来更好地选择联接(例如,Map 端排序合并联接)。

  • Cost-based Optimization

Query Execution

  • P0本机支持数字类型,日期时间和 IP 地址

  • 当前,大多数数字,日期时间和 IP 地址都视为字符串。如果我们知道它们的数据类型,则应该以更有效的方式存储这些数据类型(另请参见“二进制存储和 SerDe”)。

  • P0创建一个对数据压缩更友好的 URL 数据类型。

  • URL 很长,会占用很大一部分存储空间。它们被视为通用字符串,并使用字符串压缩算法。我们应该研究是否存在以巧妙的方式处理 URL 数据类型的方法,以便压缩算法(可以是定制的压缩算法)可以在足够小的开销下更好地压缩数据。

  • P1二进制存储格式和 SerDe

  • 这个想法是在将数据存储到磁盘之前,先以其原始格式(而不是转换为 UTF-8 字符串类型)存储数据。这样可以在数据转换和对象创建中节省大量 CPU/IO 成本。

    • 还研究了在查询(过滤)之前不需要解压缩的其他列存储中使用的压缩技术。

    • 重新访问 LazyBinarySerDe,查看它们是否可以重用或扩展为该存储格式。

    • 使此存储格式适合 mmap()(或 Java 中的 FileChannel),以便在内存随机访问可以跳过部分数据(例如列)的情况下,系统可以跳过 I/O。

  • 支持 IN,存在和相关子查询

  • 更多本机类型-枚举,时间戳

  • Persistent UDF's

  • SQL/OLAP

  • 存储处理程序的改进

  • System views

  • JDBC/ODBC improvements

  • Map 到 mapreduce 过渡(不再使用,因为不再需要 mapred)

Metadata Management

  • P0减少 metastore 的大小„Äì“所需的费用:有些想法是不存储 COLUMNS 等。

  • 这里的一个想法是引入类似架构对象的东西,其中包含列对象。分区将继承架构对象,该对象仅在表架构更改时才会更改。迁移现有设置也将涉及到工作。这将大大减少列中的行数(当前为十亿)。

  • P1查看改进

测试,错误消息和调试

  • P0重型测试基础架构

  • 自动代码覆盖率报告

  • Hive CLI 改进/错误消息

  • HiveServer robustness

  • 可调试性/可恢复性:

  • 向用户显示导致任务失败的数据的最后一部分

    • 重新启动具有特定 Map 器的作业(该早期 Map 因调试目的而失败)

    • 在 map-reduce 作业级别恢复。