我们正在尝试通过impala连接器将ms 9.4连接到hbase。
首先,我们创建了hive表,将它们与hbase表类似,并使用以下create 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");
我们做了两次,因为我们想创建两个配置单元表及其对应的hbase表,以便稍后使用ms在它们之间执行连接。
对于ms与hbase之间的连接,我们按照以下步骤选择impala wire协议的microstrategy odbc驱动程序,并填写数据源名称(以前使用impala驱动程序创建的impala数据源)、主机和端口(都用于在aws基础结构中安装impala)和impala/impala作为凭据。
问题是,当我们完成向导并选择默认名称空间(这是唯一可用的名称空间)时。没有创建任何其他ns),我们可以看到之前创建的配置单元表,而不是hbase表。
我是说:
hiveTableName1
hiveTableName2
而不是
hbaseTableName1
hbaseTableName2
而且,由于只有这两个表可用,因此我们只能使用这两个表执行报告:这两个表之间通过一个字段进行非常简单的连接。两个表都有200000条记录,连接需要1分钟以上才能完成。我确信我们在这里遗漏了一些东西,并且将配置单元表链接到hbase表的过程并不完全正确。有没有办法连接到这两个hbase表而不是配置单元表?任何帮助都将不胜感激。
1条答案
按热度按时间xzlaal3s1#
1hbase不支持sql,也不支持“join”的概念。
2将配置单元表Map到hbase表意味着每个配置单元查询都会触发hbase端的完全扫描,然后将结果馈送到执行筛选器和联接的mapreduce批处理作业。
一句话:对于你正在做的事情来说,1分钟是相当快的。
如果您希望得到次秒级的结果,请尝试一些“小数据”技术(例如mysql、oracle、甚至ms-access),或者忽略连接。对于次分钟的结果,您可以尝试使用apachephoenix:它是一个带有索引和某种sql的hbase Package 器。但不确定odbc/jdbc驱动程序。