HBase的“两列合一”功能

时间:2018-10-25 09:32:36

标签: hbase

下面的书暗示着有一种方法可以将两个列放在一起而不使用列族。它是真正的HBase功能还是仅仅是一个开发人员的黑客,例如“在将两个值发送到Hbase之前将两个值连接到一列中,我会记得实际上是我放到那里的两列”-黑客?如果这是一项功能,那么其​​语法是什么?

  

“ Mark Grover的Hadoop应用程序体系结构,Ted Malaska,   乔纳森·塞德曼和格温·夏皮拉(O’Reilly)。”:

     

[将两个列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 storing data for a particular column with 2 or more values for the same row-key in Scala/Java API中的一列中并将它们视为值的“版本”不同,因为他在这里谈到foo和bar是具有两个不同角色的两个不同的列。我没有在Hbase文档https://hbase.apache.org/book.html#schema中提及此功能。

1 个答案:

答案 0 :(得分:2)

我认为您可以将值数组用于HBase值。获取数组值后,应拆分并使用。我认为没有其他方法可以在单个列族中存储多个值。