Microstrategy - HBase 连接

Microstrategy - HBase connection

我们正在尝试通过 Impala 连接器将 MS 9.4 连接到 HBase。

首先,我们创建了配置单元 tables,将它们添加到 HBase tables 中,创建 table(正如我们在文档中看到的那样):

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 tables 和它们对应的 hbase tables,以便稍后使用 MS 在它们之间执行连接。

对于 MS 与 HBase 之间的连接,我们按照 selecting MicroStrategy ODBC Driver for Impala Wire Protocol,并填写数据源名称(Impala先前使用 Impala 驱动程序创建的数据源)、主机和端口(均用于 Impala 在我们的 AWS 基础设施中安装)和 impala/impala 凭据。

事情是,当我们完成向导和 select 默认命名空间(这是唯一可用的。没有创建任何其他 ns)时,我们可以看到配置单元 tables 我们之前创建的,而不是 hbase tables.

我的意思是:

hiveTableName1
hiveTableName2

而不是

hbaseTableName1
hbaseTableName2

并且,由于这些是唯一可用的 table,我们只能使用这两个 table 执行我们的报告:这两个 table 之间的连接非常简单,方法是一个领域。 两个 table 都有 200.000 条记录,连接需要 1 多分钟才能完成。 我确定我们在这里遗漏了一些东西,并且将 hive tables 链接到 hbase 的过程并不完全正确。 有没有办法连接到这两个 hbase table 而不是 hive 的? 非常感谢任何帮助。

1. HBase不支持SQL,反正也不支持"join"的概念。

2. Mapping Hive tables on HBase tables 意味着每个Hive查询都会触发HBase端的全扫描,那么结果是提供给执行过滤器和连接的 MapReduce 批处理作业。

底线:1 分钟对于您正在做的事情来说已经相当快了。

如果您希望得到亚秒级的结果,请尝试一些 "small data" 技术(例如 MySQL、Oracle,甚至 MS Access)或者忘记连接。 对于不到几分钟的结果,您可以尝试 Apache Phoenix:它是一个带有索引和某种 SQL 的 HBase 包装器。不过不确定 ODBC/JDBC 驱动程序。