我试图用Apache Phoenix在HBase表上运行SQL查询。基于该official documetation,模式需要与SQL查询现有表中创建:Phoenix正在更改HBase表的元信息
CREATE TABLE TABLE_NAME (....)
我试图通过凤API,但我直接连接到现有的表(与HBase的API创建的)来避免这个得到例外。 Phoenix正在执行这个查询时,它在桌面上创建了很多东西。例如,在HBase的仪表板的表部分,我可以看到下面的元数据由凤凰添加到我的表:
'QUOTES', {METHOD => 'table_att', coprocessor$1 => '|org.apache.phoenix.coprocessor.ScanRegionObserver|1|', coprocessor$2 => '|org.apache.phoenix.coprocessor.UngroupedAggregateRegionObserver|1|', coprocessor$3 => '|org.apache.phoenix.coprocessor.GroupedAggregateRegionObserver|1|', coprocessor$4 => '|org.apache.phoenix.coprocessor.ServerCachingEndpointImpl|1|', coprocessor$5 => '|org.apache.phoenix.hbase.index.Indexer|1073741823|index.builder=org.apache.phoenix.index.PhoenixIndexBuilder,org.apache.hadoop.hbase.index.codec.class=org.apache.phoenix.index.PhoenixIndexCodec'}, {NAME => '0', DATA_BLOCK_ENCODING => 'FAST_DIFF', KEEP_DELETED_CELLS => 'true'}
这听起来像凤凰正在改变表的元信息(它创建一些协处理器和索引构建器),这是否消除了生产问题(干扰使用HBase API的代码)?如果是的话如何避免它?
当你说它添加协处理器时,我做'CREATE TABLE'这是否意味着我可以使用phoenix而不调用此查询呢? – bachr 2014-09-07 09:31:03
你的意思是你可以在没有先调用CREATE TABLE或CREATE VIEW的情况下在Phoenix中运行查询吗?如果是这样,不。但是,您可以[schema-on-read](http://phoenix.apache.org/dynamic_columns.html)查询未预先定义的列。 – 2014-09-16 00:18:56
这是有点限制,因为我们不拥有hbase表,所以我们不能混淆它的结构。直接向查询直接添加colums看起来很有趣,但如果以前不需要定义模式,将会更加棒。 – bachr 2014-09-16 08:40:19