Надежны ли индексы Geomesa и синхронизированы ли они с основной таблицей?

Для создания индексов Geomesa создает несколько таблиц в HBase. У меня есть несколько вопросов:

  1. Что делает Geomesa для синхронизации этих таблиц?
  2. Как повлияет на запрос Geomesa, если индексные таблицы не синхронизированы?
  3. Что произойдет (с вызовами записи), если Geomesa не сможет записать одну из индексных таблиц?
  4. Синхронизация между таблицами — лучший вариант, или Geomesa обеспечивает доступность данных с возможной согласованностью?

Я планирую использовать комбинацию Geomesa с Hbase (при поддержке S3) для хранения своих геопространственных данных; размер данных может вырасти до терабайтов или петабайтов.

Я изучаю, насколько надежна Geomesa с точки зрения синхронизации между основной и индексной таблицами?

HBase-таблицы:

каталог1
catalog1_node_id_v4 (основная таблица)
catalog1_node_z2_geom_v5 (индексная таблица)
catalog1_node_z3_geom_lastUpdateTime_v6 (индексная таблица)
catalog1_node_attr_identifier_geom_lastUpdateTime_v8 (индексная таблица)

Схема Геомеса

geomesa-hbase описать-схему -c каталог1 -f узел

ИНФОРМАЦИЯ Описание атрибутов функции «узел»

ключ | Строка
пространство имен | Строка
идентификатор | Строка (индексированный атрибут)
идентификатор версии | Строка
идентификатор узла | Строка
широта | Целое число долгота | Целое число время последнего обновления | Дата (пространственно-временная индексация)
теги | Карта
геом | Точка (с пространственно-временной индексацией) (с пространственной индексацией)

Данные пользователя: geomesa.index.dtg | последнее время обновления
геомеса.индексы | z3:6:3:geom:lastUpdateTime,z2:5:3:geom,id:4:3:,attr:8:3:identifier:geom:lastUpdateTime

поэтому, если я обновлю одну запись в основной таблице, мне также придется вручную обновлять все индексные таблицы?

kyleqian 10.09.2021 00:59
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
115
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

GeoMesa ничего не делает для синхронизации индексов — обычно об этом следует позаботиться в вашем конвейере загрузки.

Если у вас есть надежный идентификатор функции, привязанный к данной входной функции, вы можете написать эту функцию несколько раз, не создавая дубликатов. Если во время загрузки происходит сбой пакета функций из-за временной проблемы, вы можете просто переписать их, чтобы убедиться, что индексы верны.

Для HBase, когда вы вызываете flush или close для автора функций, ожидающие изменения будут отправлены в кластер. После успешного завершения этого метода данные сохраняются в HBase. Если возникнет исключение, вам следует повторно попробовать неудавшиеся функции. При последующих сбоях HBase может потребоваться восстановить журналы упреждающей записи (WAL) в соответствии со стандартной операцией HBase.

Функция также может не быть записана из-за проверки (например, нулевая геометрия). В этом случае вы не захотите повторно использовать эту функцию, так как она никогда не будет успешно принята. Если вы используете платформу конвертера GeoMesa, вы можете использовать функции предварительная проверка, чтобы убедиться, что они будут правильно загружены.

Если у вас еще нет конвейера загрузки, вы можете проверить геомеса-нифи, который позволит вам преобразовывать и проверять входные данные, а также автоматически повторять сбои через потоки Nifi.

Спасибо Эмилио за объяснение. Какое исключение выдает Geomesa, когда ему не удается записать разные индексные таблицы? У вас есть какой-нибудь документ о списках исключений, которые выдает geomesa?

Amit 29.05.2019 19:41

Если это ошибка проверки, обычно это будет IllegalArgumentException. Если есть ошибка записи в HBase, это будет любое исключение, которое выдает клиент HBase.

Emilio Lahr-Vivaz 29.05.2019 23:05

Основываясь на вашем ответе, я предполагаю, что когда Geomesa попытается вставить данные в индексную таблицу (например, catalog1_node_z3_geom_lastUpdateTime_v6), и это не удастся, Geomesa выдаст исключение Hbase, даже если она успешно сохранила данные в другой индексированной таблице и основной таблице. Верно ли это понимание?

Amit 30.05.2019 02:47

Да, именно поэтому вы должны повторить неудачную запись — это гарантирует возможную согласованность.

Emilio Lahr-Vivaz 30.05.2019 14:36

поэтому, если я обновлю одну запись в основной таблице, мне также придется вручную обновлять все индексные таблицы?

kyleqian 10.09.2021 01:00

Нет, если вы используете API для обновления, он обновит все индексные таблицы за вас.

Emilio Lahr-Vivaz 10.09.2021 12:36

Другие вопросы по теме