Import 散装货物:don';不能导入重复的值

Import 散装货物:don';不能导入重复的值,import,hbase,bulk-load,Import,Hbase,Bulk Load,我需要每天导入一个包含昨天数据库快照的文件。要导入,我在shell中使用以下命令: ./bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \ '-Dimporttsv.separator=|' \ -Dimporttsv.columns=HBASE_ROW_KEY,info:date,info:author,info:text \ tableName \ inputFile.tsv 问题是每一行都包含所有

我需要每天导入一个包含昨天数据库快照的文件。要导入,我在shell中使用以下命令:

./bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \
    '-Dimporttsv.separator=|' \
    -Dimporttsv.columns=HBASE_ROW_KEY,info:date,info:author,info:text \
    tableName \
    inputFile.tsv
问题是每一行都包含所有的值,而不仅仅是更新的值,这导致每一列都有几个版本,但具有相同的值

是否有其他方法可以导入此每日快照而忽略重复值?或者有没有解决这个问题的建议


谢谢大家!

我想如果您真的想忽略现有值,您需要编写自己的map/reduce,而不是使用导入程序


但是,多个版本有什么问题?首先,您可以设置hbase保留的版本数(当您定义列系列时);其次,当您阅读时,您可以只阅读最新版本;最后,如果您担心存储问题,您可以将hbase设置为使用压缩

我正在接近这个答案,编写自己的映射/减少函数来导入数据。关于多个版本,这不是一个真正的问题,正如您所说,我可以保存每个版本,只需扩展磁盘容量。我的问题是如何避免两次保存保存值,通过这种方式,在同一个单元上有多个相同值的版本。我所说的是,如果使用压缩,则不必太担心容量。如果将列族的版本设置为1,则hbase将在压缩后删除重复项。我关心的不是磁盘空间。我在一个项目中工作,需要知道“世界”在某个时间点的状态,例如:“对于这个单元格,一个月前的值是多少?”。为此,我需要对单元格进行版本控制。但是,如果我每天都更新我的计算单元,而没有真正更新(例如,因为是相同的值),那么我就是在浪费版本:/n您认为在Hbase性能方面,将列族的最大版本设置为365(足以保存一年历史)不是问题吗?谢谢你的帮助!对于hbase,每个“单元”(键+列系列+限定符+时间戳+版本+值)都是一个新行,据我所知,这并不重要。在任何情况下,您都可以将更新时间(max-update time actuallu)添加为密钥的一部分,并且不使用hbase版本。get by前缀将为您提供最新版本,完整密钥将为您提供特定版本,并且您将不受365个版本的限制(或者您可以将生存时间设置为365天,hbase将清除旧值)