行具有相同的键

时间:2015-05-25 20:06:42

标签: hbase bigdata

当我需要创建HBase行时,我必须调用Put(row_key)方法。然后,如果我再次使用相同的Put()值调用row_key方法,会发生什么?是否会更新现有行或HBase是否会创建新行?

是否可以使用相同的键创建2行?

5 个答案:

答案 0 :(得分:5)

行键用于在Hbase中唯一标识行。如果你想让两行拥有相同的键,那么你就会遗漏一些东西。请添加有关您的要求的更多信息,或重新访问Hbase架构的基础知识

答案 1 :(得分:3)

您的问题还应包括列族和列限定符值。使用行键,这三个是hbase表中值的唯一标识符。

此外,您可以为该列系列启用版本控制,并且具有多个值,这些值可以具有相同的“行键+列族+列限定符”值。在这种情况下,每个唯一版本(值)由“rowkey + col.fam。+ col.qual。+ timestamp”定义

答案 2 :(得分:2)

您不能拥有具有相同键的行,但您可以使用时间戳创建多个Put版本。您可以使用这些内置时间戳进行审计或加时间戳。

如果您在未指定版本(时间戳)的情况下发出多个Puts,则以KV的最新版本为准。如果您发出多个put相同的显式设置时间戳,将返回其中一个值,但HBase不保证订单以及哪个KV将在压缩(计划清理)中存活。如果您插入带有负时间戳的多个Puts,这将非常糟糕。早期的HBase版本将产生不可预测的扫描结果,而后来的HBase版本将引发异常。

答案 3 :(得分:0)

对于较新版本的Hbase,只有最后一条记录可以从查询中提取,例如get'emp';默认情况下,版本控制保持为1;但是在hfiles中的其他先前版本下面,并且在压缩期间刷新。

答案 4 :(得分:0)

来自the documentation of the PUT operation

  

放置将新行添加到表中(如果键是新键)或可以更新   现有行(如果键已经存在)。看跌期权通过执行   Table.put(非writeBuffer)或Table.batch(非writeBuffer)。

NB:重点是我的