当我们需要拉更多的列数时,Hive 或 Hbase?

Hive or Hbase when we need to pull more number of columns?

我在 Hadoop 中有一个包含 100 列和几百行的数据结构。大多数时候我需要查询 65% 的列。在这种情况下,使用 HBASE 或 HIVE 哪个更好?请指教

您访问的列数不是决定 hbase 或 hive 的标准。

蜂巢(SQL):

有仓储需求,擅长SQL,不想写MapReduce作业的时候使用Hive。不过有一点很重要,Hive 查询会在后台转换为相应的 MapReduce 作业,该作业在您的集群上运行并为您提供结果。 Hive 为您解决问题。但是使用 HiveQL 无法解决所有问题。有时,如果您需要非常细粒度和复杂的处理,您可能不得不寻求 MapReduce 的庇护。

Hbase(无SQL数据库):

您可以使用 Hbase 来达到这个目的。如果你有一些想要实时访问的数据,你可以将它存储在 Hbase 中。

当您知道访问模式时,hbase get 'rowkey' 非常强大

Hbase遵循CAP定理的CP

一致性:

系统中的每个节点都包含相同的数据(例如,副本永远不会没有数据)

可用性:

对系统中非失败节点的每个请求returns一个响应

分区容差:

即使在系统分区(通信丢失)和数据丢失(节点丢失)时,系统属性(一致性 and/or 可用性)仍然存在

也看看this

很难一口气回答这个问题。

HBASE 是 NoSQL 数据库:您的数据需要存储非规范化数据,因为 HBASE 对 joi 非常不利

宁表。

Hive:您可以在 Hive 中以类似格式(规范化)存储数据,但只有在进行批处理时才会看到好处。