&">nbsp;
Cloudera Impala是一项基于Hadoop的实时检索引擎开源项目,其效率十分高,较Hive提升了有3~90倍。
为什么是代码生成?
这一切的基础是最优的查询,引擎一定是原生的应用,因为它们是针对你的数据格式来开发的,而且仅仅支持你的查询。例如以下是一个理想的代码:
1 2 3 select count(*) from tbl where col like %XYZ%
这与 grep -c "XYZ" tbl 的效率一样高。
另一个例子,select sum(col) from tbl。如果表格只有一个int64的列,使用little endian编码,这可以通过专用的应用来运行:
1 2 3 4 5 int64_t sum = 0; int64_t* values = (int64_t*)buffer; for (int i = 0; i < num_rows; ++i) { sum += values[i]; }
这两个查询都是十分合理的(因为第二段代码用于列式的数据),不过在运行已有的查询引擎时会变得缓慢。(这是假设强制执行的情况;一个数据库当然可以使用索引或者预先计算的值来运行,其效率要高过简单的应用。当然,这里的技术同样应该使用非强制执行策略来实现。)这是因为如今的应用程序大多数都遵循了添加多种执行开销这一解释方法。
时间: 2024-11-01 12:25:29