我编写了一个自定义索引处理程序并想对其进行测试。但是 hive 没有使用它。所以我检查了(pokes (int foo, string bar))
带有配置单元分布的简单表以进行测试。然后我创建了一个紧凑的索引并设置了set hive.optimize.index.filter=true;
但是,在检查日志信息后,似乎 hive 仍然没有使用索引。那么,问题是什么?我发出的查询是,select foo from pokes WHERE foo=498
以下是我发出查询后得到的日志信息。
12/07/26 12:25:17 INFO index.IndexWhereProcessor: Processing predicate for index optimization
12/07/26 12:25:17 INFO index.IndexWhereProcessor: (foo = 498)
12/07/26 12:25:17 INFO metastore.HiveMetaStore: 0: get_table : db=default tbl=pokes_idx
12/07/26 12:25:17 INFO hive.log: DDL: struct pokes_idx { i32 foo, string _bucketname, list<i64> _offsets}
12/07/26 12:25:17 INFO index.IndexWhereProcessor: checking index staleness...
12/07/26 12:25:17 INFO index.IndexWhereProcessor: 1342465077455
12/07/26 12:25:17 INFO index.IndexWhereProcessor: 1342465077455
12/07/26 12:25:17 INFO util.NativeCodeLoader: Loaded the native-hadoop library
12/07/26 12:25:17 WARN snappy.LoadSnappy: Snappy native library not loaded