Hbase 具有相同键的行

Hbase 具有相同键的行,hbase,bigdata,Hbase,Bigdata,当我需要创建一个HBase行时,我必须调用Put(row\u key)方法。然后,如果我使用相同的row\u键值再次调用Put()方法,会发生什么?是更新现有行还是HBase将创建新行 是否可以使用相同的键创建两行?行键用于在Hbase中唯一标识一行。如果希望两行具有相同的键,则缺少某些内容。请添加有关您的需求的更多信息,或重新了解Hbase体系结构的基础知识。您不能有具有相同键的行,但可以有使用时间戳的多个版本的Put。您可以将这些内置时间戳用于审计或时间戳 如果在未指定版本(时间戳)的情况下

当我需要创建一个HBase行时,我必须调用
Put(row\u key)
方法。然后,如果我使用相同的
row\u键
值再次调用
Put()
方法,会发生什么?是更新现有行还是HBase将创建新行


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

行键用于在Hbase中唯一标识一行。如果希望两行具有相同的键,则缺少某些内容。请添加有关您的需求的更多信息,或重新了解Hbase体系结构的基础知识。您不能有具有相同键的行,但可以有使用时间戳的多个版本的Put。您可以将这些内置时间戳用于审计或时间戳


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

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


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

对于较新版本的Hbase,只能从查询中提取最后一条记录,比如get'emp';默认情况下,版本控制保持为1;但在其他先前版本的下方,在hfiles中,并在压实过程中冲洗。

来自:

Put向表中添加新行(如果键是新的)或可以更新 现有行(如果键已存在)。看跌期权通过以下方式执行: Table.put(非writeBuffer)或Table.batch(非writeBuffer)


注意:Emphasis-mine

不,我不需要创建具有相同键的两行(我只是感兴趣:)。我需要知道,如果我第二次调用方法
Put()
,更新行是否正确?很好,您清楚自己的要求。尝试一下,自己学习。快乐编码:)@VeLKerr是的,这是更新行的正确方法。