HBase "two columns in one"功能



下面的书暗示有一种方法可以在不使用列族的情况下将两列放在一列中。它是一个实际的 HBase 功能,还是只是一个开发黑客,例如"在将它们发送到 Hbase 之前在一列中连接两个值,我会记得它实际上是我放在那里的两列"-hack?如果这是一个功能,那么它的语法是什么?

"Hadoop Application Architectures by Mark Grover, Ted Malaska, 乔纳森·塞德曼和格温·夏皮拉(奥莱利(。

[将两列 foo 和 bar 设置为记录时,] 每个逻辑 HBase 表中的记录在 HBase HFile 中将有两行 格式。以下是磁盘上这种 HFile 的结构:

|RowKey |TimeStamp  |Column |Value
|101    |1395531114 |F      |A1
|101    |1395531114 |B      |B1

另一种选择是同时包含 foo 和 bar 的值 相同的 HBase 列。这将适用于表的所有记录 并具有以下特征:

  • 将同时检索两列。如果不需要,可以选择忽略其他列的值 它。
  • 这两个列值需要一起更新,因为它们存储为单个实体(列(。
  • 这两列将根据上次更新一起老化。

在这种情况下,这是 HFile 的结构:

|RowKey |TimeStamp  |Column |Value
|101    |1395531114 |X      |A1|B1

我认为这与在 HBase 中为特定列存储数据时将多个值放在一列中不同,该列在 Scala/Java API 中为同一行键存储了 2 个或更多值,并将它们视为值的"版本",因为在这里他谈到 foo 和 bar 是具有两个不同角色的两个不同列。我在 Hbase 文档 https://hbase.apache.org/book.html#schema 中没有发现提到这样的功能。

我认为您可以使用 HBase 值的值数组来做到这一点。获得数组值后,您应该拆分并使用。我认为没有另一种方法可以在单个列系列中存储多个值。

最新更新