本文介绍Trafodion的CQD之hbase_coprocessors,关于此CQD的详细,请参考官方文档:http://trafodion.incubator.apache.org/docs/cqd_reference/index.html#hbase-coprocessors
介绍
在Trafodion中的一些SQL查询如aggregation时可以使用两种方法执行:1 使用trafodion processes;2下推到HBase层使用HBase自身的coprocessors。
这个cqd默认值为’on’,目前只有count(*)时才会默认以hbase coprocessors的方式执行,通过查看执行计划可以看出,
>>explain options 'f' select count(*) from test_tbl;
LC RC OP OPERATOR OPT DESCRIPTION CARD
---- ---- ---- -------------------- -------- -------------------- ---------
1 . 2 root 1.00E+000
. . 1 hbase_aggr 1.00E+000
--- SQL operation complete.
如果不希望使用hbase coprocessors执行aggregation,可以通过此cqd关闭,
>>cqd hbase_coprocessors 'off';
--- SQL operation complete.
>>explain options 'f' select count(*) from test_tbl;
LC RC OP OPERATOR OPT DESCRIPTION CARD
---- ---- ---- -------------------- -------- -------------------- ---------
4 . 5 root 1.00E+000
3 . 4 sort_partial_aggr_ro 1.00E+000
2 . 3 esp_exchange 1:6(hash2) 1.49E+007
1 . 2 sort_partial_aggr_le 1.49E+007
. . 1 trafodion_scan TEST_TBL 2.99E+007
--- SQL operation complete.
>>cqd parallel_num_esps '12';
--- SQL operation complete.
>>explain options 'f' select count(*) from test_tbl;
LC RC OP OPERATOR OPT DESCRIPTION CARD
---- ---- ---- -------------------- -------- -------------------- ---------
4 . 5 root 1.00E+000
3 . 4 sort_partial_aggr_ro 1.00E+000
2 . 3 esp_exchange 1:12(hash2) 1.49E+007
1 . 2 sort_partial_aggr_le 1.49E+007
. . 1 trafodion_scan TEST_TBL 2.99E+007
--- SQL operation complete.
根据以上结果,不难发现,若使用hbase自身的coprocessor,无法指定后台使用多少进程来做table scan,而如果不使用hbase coprocessor机制,可以根据表的分区数决定dop的大小。
不过,关于是否使用hbase coprocessors,这个要根据具体情况而定,使用hbase coprocessor或不使用在性能上也会不同。就本测试而言,对一个30million的表做count(*),使用hbase coprocessors性能更优。
//use hbase coprocessor
SQL>select count(*) from test_tbl;
(EXPR)
--------------------
30000000
--- 1 row(s) selected.
Start Time 2017/07/03 13:58:14.200917
End Time 2017/07/03 13:58:22.961245
Elapsed Time 00:00:08.760328
Compile Time 00:00:00.016055
Execution Time 00:00:08.743943
Table Name Records Records Hdfs Hdfs I/O Hdfs Access
Accessed Used I/Os Bytes Time(usec)
TRAFODION.PKSAAS.TEST_TBL
0 0 1 0 8741532
>>cqd hbase_coprocessors 'off';
--- SQL operation complete.
//no hbase coprocessor
>>select count(*) from test_tbl;
(EXPR)
--------------------
30000000
--- 1 row(s) selected.
Start Time 2017/07/03 13:56:54.214082
End Time 2017/07/03 13:57:22.712163
Elapsed Time 00:00:28.498081
Compile Time 00:00:00.027952
Execution Time 00:00:28.470000
Table Name Records Records Hdfs Hdfs I/O Hdfs Access
Accessed Used I/Os Bytes Time(usec)
TRAFODION.PKSAAS.TEST_TBL
30000000 30000000 29316 7527968500 170433994
--- SQL operation complete.