【问题标题】:HBase keyvalue (NOSQL) to Hive table (SQL)HBase 键值 (NOSQL) 到 Hive 表 (SQL)
【发布时间】:2015-01-16 20:50:31
【问题描述】:

我在 Hive 中有一些表需要连接在一起。因为我需要对它们中的每一个做一些工作,所以规范化键,删除异常值......并且随着我添加越来越多的表......这个链接过程结果是一个很大的质量。 很容易迷失在你所在的地方,并且查询失去控制。

但是,我非常清楚最终表格的外观,并且每一列都完全独立于其他表格。

例如,这里是一个例子:

table_class1 
name id score
Alex 1  90
Chad 3  50
...

table_class2
name      id score
Alexandar 1  50
Benjamin  2  100
... 

最后我真的想要的东西是这样的:

name id class1 class2 ...
alex 1  90     50
ben  2  100    NA  
chad 3  50     NA

我知道它可能是一个左外连接,但我真的很难在规范化之后为它们中的每一个创建一个单独的表,然后使用左外连接和 keys 的联合到左外加入他们每个人...

我正在考虑使用 NOSQL(HBase) 将处理后的数据转储为 NOSQL 格式.. 比如:

(source, key, variable, value)
(table_class1, (alex, 1), class1, 90)
(table_class1, (chad, 3), class1, 50)
(table_class2, (alex, 1), class2, 50)
(table_class2, (benjamin, 2), class2, 100)
...

最后,我想在 R reshape 包中使用 meltcast 之类的东西来将数据恢复为表格。

由于这是一个大数据项目,HBase 中会有上亿个键值对。

(1) 我不知道这是否合法

(2) 如果是这样,是否有任何大数据工具可以将长 HBase 表转换为 Hive 表。

【问题讨论】:

  • 我认为在 Hive 中保持高度规范化的数据结构不是一个好主意。 Hive 不是一个传统的数据库,它需要良好的设计模式并且可以很好地处理连接。对我而言,您想要的最终结果是为 hive 提供更好的表结构,而不是保留一些规范化的表。

标签: r hadoop hive hbase


【解决方案1】:

老实说,我很乐意提供更多帮助,但我不清楚您想要实现的目标(可能是因为我从未使用过 R),请详细说明,如有必要,我会尝试改进我的答案。

为什么需要 HBase?您可以将处理后的数据存储在新表中并使用它们,如果查询太大,您甚至可以CREATE VIEW 来简化查询,也许这就是您正在寻找的(HIVE manual)。除非你有充分的理由使用 HBase,否则我会坚持使用 HIVE 以避免额外的复杂性,不要误会,使用 HBase 有很多正当理由。

关于你的第二个问题,你可以定义和使用 HBase 表作为 HIVE 表,你甚至可以将 CREATESELECT INSERT 都放入 HIVE 中,这就是你要找的吗?:HBase/HIVE integration doc

最后一件事如果你不知道,你可以很容易地在 HIVE 中创建自定义函数来帮助你完成繁琐的规范化过程,看看this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多