В зависимости от того, как вы хотите получить данные из HBase, у вас есть несколько возможностей. Фактически, поскольку HBase обеспечивает автоматическое лексикографическое упорядочение ключей строки, вы можете улучшить свои операции Get
или Scan
следующим образом:
1) Вас заинтересуют все домены данногоweek
[rowKey] -> [colName0] = [colValue0], ...
"2019-01" -> domain0 = "{data for domain0}", domain1 = "{data for domain1}"
...
"2019-52" -> ...
В этом случае вы можете использовать либо операцию Get
, чтобы получить все данные доменов за данную неделю, либо операцию Scan
, чтобы получить данные всех доменов за несколько недель.
2) Вы будете заинтересованы в одном домене одновременно, в течение нескольких недель
[rowKey] -> [colName0] = [colValue0], ...
"domain0_2019-01" -> data = "{data for domain0 on week 1}"
...
"domain0_2019-52" -> data = "{data for domain0 on week 52}"
"domain1_2019-01" -> data = "{data for domain1 on week 1}"
...
В этом случае вы можете получить данные одного домена за одну неделюпостроив Get
соответственно, или вы можете получить данные за все (или подмножество) недель для данного домена, используя Scan
с частичными START_ROW
и END_ROW
. Например, Scan
с START_ROW = "domain0_2019"
и STOP_ROW = "domain0_2020"
даст вам данные за весь 2019 год для домена 0.
3) Вас заинтересует одна неделя и один домен ввремя
[rowKey] -> [colName0] = [colValue0], ...
"2019-01_domain0" -> data = "{data for domain0 on week 1}"
"2019-01_domain1" -> data = "{data for domain1 on week 1}"
...
"2019-52_domain0" -> data = "{data for domain0 on week 52}"
"2019-52_domain1" -> data = "{data for domain1 on week 52}"
...
Этот подход аналогичен первому и отличается от него в зависимости от того, сколько данных вы собираетесь хранить в фактическом столбце. Этот подход предпочитает использовать операции Get
для получения данных о конкретной неделе для определенного домена.
Могут быть и другие соображения, и это действительно зависит от того, как вы хотите извлечь данные из таблицы HBase,если вы будете использовать только Get
операции или вам также понадобится Scan
данные и т.д ...