Мы используем phoenix и hbase-indexer для нашего кластера hbase и обнаружили любопытное явление о вторичных индексах Phoenix:
Мы помещаем данные (используя psql для импорта данных csv) в одну таблицу (C_PICRECORD) с двумя глобальными изменяемыми индексными таблицами (C_PICRECORD_IDX1 и C_PICRECORD_IDX2) из Phoenix и заставляем hbase-indexer реплицировать данные в solr. После завершения импорта данных мы обнаружили, что номер документа solr отличается от количества строк в таблице hbase. Когда мы отбрасываем индексные таблицы, очищаем данные и снова помещаем данные, мы обнаружили, что номер документа solr совпадает с количеством строк в таблице hbase.
Недавно мы обнаружили причину, по которой solr document numfound отличается от количества строк в таблице hbase: 1) при удалении документа будет что-то не так, хотя на самом деле мы просто импортируем данные (psql) с двумя глобальными индексными таблицами из Phoenix!
2) любопытный феномен несовместимого количества строк между solr и hbase возникает только тогда, когда у нас есть вторичные индексы с таблицей данных.
Это нас давно беспокоит и, кажется, что-то другое при использовании вторичных индексов Phoenix.
Итак, мой вопрос: обрабатывают ли вторичные индексы Phoenix специальные журналы WAL?
наш env:
cdh5.4.2 hbase-1.0.0-cdh5.4.2 phonenix-4.6 hbase-solr-1.5-cdh5.4.2 (индексатор hbase)
кластер: 3 hbase regionserver и 3 hbase-indexer
[Советы]
hbase-indexer помещает данные в solr на основе репликации hbase. Он перехватит журнал WAL и поместит интересующие данные в solr. hbase-indexer github: https://github.com/NGDATA/hbase-indexer