Hadoop或HBase写入部分结果?
我有一个问题很少发生,部分结果被写入我们的HBase数据库。以下是我的映射器和还原器的说明:Hadoop或HBase写入部分结果?,hadoop,mapreduce,hbase,Hadoop,Mapreduce,Hbase,我有一个问题很少发生,部分结果被写入我们的HBase数据库。以下是我的映射器和还原器的说明: 映射程序统计与特定功能关联的数据,并发送键为=数据名称,值为=计数的MapWritables。例如: 如果键相同,则还原器对MapWritable中的值求和。结果将写入HBase,其中键是行id,列是映射中的键,值是总和。根据上面的示例键和映射,我们将在HBase中写入: 在过去4个月内,有两次(因此不太频繁)将结果写入HBase,其中一列的数字非常低(如1或3),其余列的数字正常。当我重新运行
- 映射程序统计与特定功能关联的数据,并发送键为=数据名称,值为=计数的MapWritables。例如:
- 如果键相同,则还原器对MapWritable中的值求和。结果将写入HBase,其中键是行id,列是映射中的键,值是总和。根据上面的示例键和映射,我们将在HBase中写入:
还有其他人经历过类似的行为吗?有人有想法吗?任何帮助都将不胜感激。谢谢 如果您使用的是hadoop 0.20.*它缺少append支持,这会导致hbase偶尔丢失数据。HBase需要追加写入WAL之类的内容,如果没有它,则无法保证所有写入都能写入磁盘。-如果是这样的话,您可以将hadoop更新到更高的版本 你的Hadoop版本是什么?而Hbase呢?hadoop-core-0.20.2-cdh3u4,Hbase-0.90.4-cdh3u4My的问题可能属于这一类,因为我使用的是hadoop 0.20*(尽管我们的版本是Cloudera的cdh3u4),但是,为什么会向Hbase写入一个奇怪的值而不是没有值,这对我来说没有意义。我没有不断更新HBase中的值——我只写了一次,所以为什么它会选择写1而不是530000?如果它写的是垃圾,那么它就写的是垃圾。试着在不同的hadoop版本上运行它
Key = "Feature X"
MapWritables =
{"Total Usage":"4", "Unique Usage":2, "Associated Revenue":22},
{"Total Usage":"3", "Unique Usage":1, "Associated Revenue":20}
rowID = "Feature X"
column,value="Total Usage", 7
column,value="Unique Usage", 3
column,value="Associated Revenue", 42