当我们需要拉更多的列数时,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 中以类似格式(规范化)存储数据,但只有在进行批处理时才会看到好处。
我在 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 中以类似格式(规范化)存储数据,但只有在进行批处理时才会看到好处。