Hadoop和Cassandra比较2行



我在Cassandra ColumnFamily上有两行,我想比较具有相同列名的列的值,例如:

CF:用户

键:列:

K1:{Col1:"Andy"V1:"100"}{Col2:"Tom"V2:"100)}

K2:{Col1:"Andy"V1:"120"}{Col2:"Tom"V2:"90"}

现在我想比较K2列和K1列的差异,以在Cassandra:中获得这个结果

键:列:

K1:{Col1:"Andy"V1:"100"}{Col2:"Tom"V2:"100)}

K2:{Col1:"Andy"V1:"120"差异:20}{Col2:"Tom"V2:"90"差异:-10}

一开始我想用Hadoop编写这个代码,但我看到了一个问题,我不能为映射进程定义两个键?

Haddop是我们的选择,因为它必须是一个可扩展的解决方案。

我希望有人能给我小费吗?

BG,Danny

我不明白子动作的基将由哪一行表示?K1[V1]-K2[V1],反之亦然?

好的,假设具有最近时间戳的行将作为基础。

映射步骤应发出以下信息(K=>V):

// each value is a WritableComparable object to allow sorting by timestamp
"Andy" => {"key":K1, "value":100, timestamp1} 
"Tom"  => {"key":K1, "value":100, timestamp2} 
"Andy" => {"key":K2, "value":120, timestamp3} 
"Tom"  => {"key":K2, "value":90,  timestamp4} 

减少步骤将接收成对的数组,每个值都按时间戳排序:

"Andy" => [ {"key":K1, "value":100, timestamp1},
            {"key":K2, "value":120, timestamp3} ]
"Tom"  => [ {"key":K1, "value":100, timestamp2},
            {"key":K2, "value":90,  timestamp4} ]

现在,在reduce步骤中,您可以轻松地执行子操作,并将必要的列(如"diff")写入数据库

相关内容

  • 没有找到相关文章

最新更新