2013-12-11 45 views
0

我想用Hbase存储网络事件,rowkey将是事件的时间戳。这将在Hbase中创建热点,为了避免这种情况,我要为rowkey添加一个盐前缀。这将在所有区域均匀分布行。 到目前为止没有问题。使用Impala查询盐渍Hbase rowkey

但我也想用Cloudera Impala来用SQL查询这些数据。是否可以使用带有腌制rowkeys的Impala?或者我需要* sql查询来获得所有结果?

回答

1

不幸的是,Impala不支持这一点。我也发现Impala在HBase上的表现非常差。我仍然试图调整我的配置,以使性能更好。在我的实验中镶木地板似乎是最快的(由x的100s)。事实上,没有压缩的平坦tsv文件比HBase表现更好。下面介绍的用例因帕拉与HBase的(直接从Cloudera的文档):

使用情况通过因帕拉查询HBase的

以下是普遍使用的情况下,使用黑斑羚查询HBase的表:

在Impala中保留大事实表,在HBase中保留较小的维表。事实表使用针对扫描操作进行优化的Parquet或其他二进制文件格式。连接查询扫描大型Impala事实表,并在HBase中使用高效的单行查找交叉引用维表。 使用HBase存储快速递增的计数器,例如网页被查看的次数或社交网络,用户拥有多少连接或某个帖子收到多少票。 HBase可以有效捕获这些可更改数据:只有追加存储机制才能将每次更改写入磁盘,并且查询始终返回最新值。应用程序可以查询来自HBase的特定总计,并将结果与​​从Impala查询的更广泛的一组数据相结合。 在HBase中存储非常宽的表。宽表有许多列,可能有数千个列,通常记录诸如在线服务的用户的重要主题的许多属性。这些表格也经常是稀疏的,也就是说,大多数列值都是NULL,0,false,空字符串或其他空白或占位符值。 (例如,任何特定的网站用户可能从未使用过某些网站功能,填写了其个人资料中的某个字段,访问了该网站的特定部分,等等。)针对这种类型的表的典型查询是查看添加一行以检索有关特定主题的所有信息,而不是像典型的Impala管理的表中那样对数百万行进行求和,平均或筛选。

或者HBase表可以连接一个更大的Impala管理的表。例如,分析表示站点的Web流量的大型Impala表,并挑选50个查看最多页面的用户。用HBase中的广泛用户表加入这个结果来查找这些用户的属性。连接的HBase端将在HBase中产生50个有效的单行查找,而不是扫描整个用户表。

特别针对HBase运行SQL查询。你有没有看过Pheonix?它支持salted表并提供SQL语法。我不知道它有多快,或者它与Dremel实现的比较。