Trafodion CQD-hbase_coprocessors

来源:互联网 发布:网络打印适配器 编辑:程序博客网 时间:2024/04/29 22:27

本文介绍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+0003    .    4    sort_partial_aggr_ro                                  1.00E+0002    .    3    esp_exchange                    1:6(hash2)            1.49E+0071    .    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+0003    .    4    sort_partial_aggr_ro                                  1.00E+0002    .    3    esp_exchange                    1:12(hash2)           1.49E+0071    .    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 coprocessorSQL>select count(*) from test_tbl;(EXPR)--------------------            30000000--- 1 row(s) selected.Start Time             2017/07/03 13:58:14.200917End Time               2017/07/03 13:58:22.961245Elapsed Time                      00:00:08.760328Compile Time                      00:00:00.016055Execution Time                    00:00:08.743943Table 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.214082End Time               2017/07/03 13:57:22.712163Elapsed Time                      00:00:28.498081Compile Time                      00:00:00.027952Execution Time                    00:00:28.470000Table 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.