Микростратегия — подключение к HBase

Мы пытаемся подключить MS 9.4 к HBase через коннектор Impala.

Сначала мы создали таблицы куста, сравнив их с таблицами HBase со следующей таблицей создания (как мы видели в документах):

CREATE TABLE hiveTableName1 
(key int, columnName1 codClient, columnName2 clientName)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,columnfamily1:columnName1,columnfamily1:columnName2")
TBLPROPERTIES ("hbase.table.name" = "hbaseTableName1");

Мы сделали это дважды, так как хотим создать две таблицы hive и соответствующие им таблицы hbase, чтобы позже выполнить соединение между ними с помощью MS.

Для соединения между MS с HBase мы следуем шагам, выбирая драйвер ODBC MicroStrategy для протокола Impala Wire и заполнив имя источника данных (источник данных Impala, ранее созданный с помощью драйвера Impala), хост и порт (оба для установки Impala). в нашей инфраструктуре AWS) и impala/impala для учетных данных.

Дело в том, что когда мы закончим работу мастера и выберем пространство имен по умолчанию (единственное доступное пространство. Никаких других ns создано не было), мы увидим таблицы кустов, которые мы создали ранее, вместо таблиц hbase.

Я имею в виду:

hiveTableName1
hiveTableName2

вместо

hbaseTableName1
hbaseTableName2

И, поскольку это единственные доступные таблицы, мы можем выполнить наш отчет только с этими двумя таблицами: очень простое соединение между этими двумя таблицами по одному полю. Обе таблицы содержат 200 000 записей, и соединение занимает более 1 минуты. Я уверен, что мы что-то здесь упускаем, и процесс привязки таблиц hive к таблицам hbase не совсем правильный. Есть ли способ подключиться к этим двум таблицам hbase вместо hive? Любая помощь будет действительно оценена.


person josele    schedule 21.08.2015    source источник


Ответы (1)


1. HBase не поддерживает SQL и в любом случае не поддерживает концепцию "объединения".

2. Сопоставление таблиц Hive с таблицами HBase означает, что каждый запрос Hive инициирует полное сканирование на стороне HBase, а затем результат передается в пакетное задание MapReduce, которое выполняет фильтрацию и присоединяется.

Итог: 1 минута — это довольно быстро для того, что вы делаете.

Если вы ожидаете результатов менее чем за секунду, попробуйте некоторые технологии «малых данных» (например, MySQL, Oracle, даже MS Access) или забудьте о соединениях. Для результатов меньше минуты вы можете попробовать Apache Phoenix: это оболочка HBase с индексами и своего рода SQL. Однако не уверен в драйверах ODBC/JDBC.

person Samson Scharfrichter    schedule 21.08.2015
comment
Большое спасибо за быстрый ответ, Самсон. Поскольку для соединения MS-HBase нам пришлось использовать коннектор MS Impala, а Impala предоставляет функцию соединения sql, мы подумали, что соединение между двумя таблицами является хорошим тестом производительности. Предполагается, что это объединение Impala каким-то образом транслируется для выполнения необходимого запроса на hbase, не так ли? - person josele; 24.08.2015
comment
В любом случае, основываясь на вашем втором замечании, я думаю, что сопоставление таблиц Hive с таблицами HBase для использования коннектора MS Impala не кажется хорошей идеей для доступа к базе данных с низкой задержкой. Вот почему я не вижу смысла использовать здесь hbase (поскольку нам все еще нужно пройти через hive, в списке для использования MS). Другим вариантом был Phoenix. Но коннектор Phoenix для MS предоставляется только в версии MS 10, поэтому нам нужно обновиться. Я думаю, что это может быть лучшим вариантом. Хотя использование любой другой базы данных, такой как Oracle или Mongo, кажется неплохой идеей. - person josele; 24.08.2015
comment
Impala утверждает, что она быстрее, чем Hive (а циники добавляют: а что нет?), но использует собственный процессор запросов и собственный механизм хранения. Объединение Hive и HBase в цепочку означает, что самое слабое звено и т. д. - person Samson Scharfrichter; 24.08.2015
comment
В будущем, возможно, Presto станет для вас вариантом. Teradata начала поддерживать его, как ядро ​​с открытым исходным кодом (любезно предоставленное Facebook), так и некоторые будущие платные расширения. - person Samson Scharfrichter; 24.08.2015