Hive/Impala 选择并平均所有行键版本

Posted

技术标签:

【中文标题】Hive/Impala 选择并平均所有行键版本【英文标题】:Hive/Impala select and average all rowkey versions 【发布时间】:2014-04-13 20:00:00 【问题描述】:

我想知道是否有一种方法可以在 HBase 中获取特定行键的先前版本,而无需编写 MapReduce 程序并对值进行平均。我很好奇这是否可以使用 Hive 或 Impala(或其他类似程序)以及您将如何做到这一点。

我的桌子是这样的:

  Composite keys          Values 
  (md5 + date + id) | (value)

我想对特定日期的所有值和所有版本的 id 的子字符串(“411”)进行平均。

提前谢谢。

【问题讨论】:

您应该在服务器上进行计算,而不是在客户端(Impala 或其他)。 Hbase 协处理器端点非常适合您的需求。 【参考方案1】:

Impala 使用 Hive 元存储将其表的逻辑概念映射到物理存储在 HDFS 或 HBase 中的数据(有关更多详细信息,请参阅Cloudera documentation)。

要详细了解如何告知 Hive 元数据存储在 HBase 中的数据,请参阅Hive documentation。

不幸的是,如上面链接的 Hive 文档中所述:

目前无法访问 HBase 时间戳属性,并且 查询总是使用最新的时间戳访问数据

在HIVE-2828 中针对旧版本的 Hive 添加了此功能,但不幸的是,该工作尚未合并到主干中。

因此,对于您的应用程序,您必须重新设计 HBase 架构以包含“版本”列,将这一新列告知 Hive 元存储,并让您的应用程序了解该列。

【讨论】:

以上是关于Hive/Impala 选择并平均所有行键版本的主要内容,如果未能解决你的问题,请参考以下文章

如何安装SAS并配置连接Hive/Impala

使用字符串分区键与整数分区键的 Hive/Impala 性能

Azure 表:选择分区/行键的最佳实践

如何安装Tableau并连接CDH的Hive/Impala

hbase 行键设计

如何在Hive&Impala中使用UDF