【发布时间】: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 包中使用 melt 和 cast 之类的东西来将数据恢复为表格。
由于这是一个大数据项目,HBase 中会有上亿个键值对。
(1) 我不知道这是否合法
(2) 如果是这样,是否有任何大数据工具可以将长 HBase 表转换为 Hive 表。
【问题讨论】:
-
我认为在 Hive 中保持高度规范化的数据结构不是一个好主意。 Hive 不是一个传统的数据库,它需要良好的设计模式并且可以很好地处理连接。对我而言,您想要的最终结果是为 hive 提供更好的表结构,而不是保留一些规范化的表。