HBase доступ и индекс - PullRequest
       13

HBase доступ и индекс

2 голосов
/ 02 декабря 2011

У меня есть таблица HBase с примерно 50 миллионами строк, и каждая строка имеет несколько столбцов. Моя цель - извлечь из таблицы те строки, которые имеют заданное значение в данном столбце, например, строки, столбец которых 'col_1' имеет значение 'val_1'.

У меня есть два варианта на выбор:

  1. сканировать таблицу от начала до конца, проверять каждую строку и видеть, нужно ли ее извлекать или нет;
  2. построить индексы для этой таблицы (например, индексы для значений в столбце 'col_1'), затем для заданного значения столбца 'val_1' получить все ключи строки, связанные с этим индексом 'val_1', затем пройти через эти ключи строки и получить соответствующие строки. Это, на мой взгляд, будет включать произвольный доступ к исходной таблице hbase.

Кто-нибудь дает мне несколько советов о том, какой вариант работает быстрее, или у вас есть другой лучший вариант?

Большое спасибо!

Ответы [ 3 ]

4 голосов
/ 03 декабря 2011

Вы спрашиваете, сделает ли добавление индекса быстрее? Ответ, конечно, да. Вы можете посмотреть вики с мыслями о вторичных индексах в HBase.

2 голосов
/ 04 декабря 2011

Индекс, безусловно, будет работать быстрее, чем каждый раз сканировать 50M строк. Если вы используете версию hbase, в которой уже есть сопроцессоры, вы можете следовать советам Xodarap. Если вы используете более старые версии Hbase, вам нужно настроить дополнительную таблицу, чтобы она действовала в качестве индекса и обновлялась вручную (либо каждый раз, когда вы обновляете основную таблицу, либо время от времени с помощью карты / уменьшения)

1 голос
/ 13 июня 2012

Вторичный индекс будет быстрее. Вы также можете попробовать вторичную библиотеку индексов, например culvert , вместо создания собственного индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...