phoenix正在更改hbase表的元信息

mm9b1k5b  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(342)

我正在尝试使用apachephoenix在hbase表上运行sql查询。根据官方文档,需要使用sql查询为现有表创建模式:

CREATE TABLE TABLE_NAME (....)

我试图通过phoenix api直接连接到一个现有的表(用hbase api创建)来避免这种情况,但是我遇到了异常。问题是当phoenix执行这个查询时,它会在表上创建很多东西。例如,在hbase Jmeter 板的tables部分,我可以看到phoenix将以下元数据添加到我的表中:

'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'}

听起来像是pheonix正在更改表的元信息(它创建了一些协处理器和索引构建器),这是不是在为生产制造问题(与使用hbase api的代码相冲突)?如果是这样,如何避免呢?

kgqe7b3p

kgqe7b3p1#

是的,ApachePhoenix在执行以下操作时会将协处理器添加到基础hbase表的元数据中 CREATE TABLE 或者 CREATE VIEW 如本文所述。这些操作不会干扰使用hbase api的代码,因为协处理器执行的任何处理只有在发出api调用的客户端设置了特定于phoenix的属性时才会触发。
为了一个 Phoenix VIEW ,仅进行这些元数据更改。为了一个 Phoenix TABLE ,除了这些元数据更改之外,表的每一行都会添加一个空的keyvalue。这样做是为了提高性能,并且在所有列都设置为null时防止行“消失”。更多细节在这里。

相关问题