Я пытаюсь использовать Apache Phoenix для запуска SQL-запросов в таблицах HBase. На основе official documetation, схема должна быть создана для существующих таблиц с запросом SQL:Phoenix меняет метаинформацию таблиц HBase
CREATE TABLE TABLE_NAME (....)
Я пытался избежать этого путем прямого подключения к существующей таблице (созданной с HBase API) через феникс 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'}
Это звучит как Pheonix меняется метаинформацию таблицы (ее создает некоторые сопроцессоры и построители индексов). Разве это не создает проблемы для производства (интерферировать с кодом, использующим HBase API)? если да, то как этого избежать?
, когда вы говорите, что добавляет сопроцессоры, когда я делаю 'CREATE TABLE', значит ли я использовать phoenix без вызова этого запроса? – bachr
Вы имеете в виду, можете ли вы запустить запрос в Phoenix, не вызывая сначала CREATE TABLE или CREATE VIEW в таблице? Если да, то нет. Однако вы можете [schema-on-read] (http://phoenix.apache.org/dynamic_columns.html) запросить столбцы, которые не были определены заранее. –
Это немного сдерживает, так как мы не владеем таблицей hbase, поэтому мы не можем вмешиваться в ее структуру. Добавление динамически столбцов непосредственно к запросу выглядит интересным, но будет более устрашающим, если нет необходимости заранее определять схему :) – bachr