hadoop和cassandra比较2行

uurity8g  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(339)

我在cassandra columnfamily上有两行,希望比较具有相同columnname的列的值,例如:
cf:用户
关键字:列:
......................................................

k1:{col1:“安迪”v1:“100”}{col2:“汤姆”v2:“100”}

k2:{col1:“安迪”v1:“120”}{col2:“汤姆”v2:“90”}

现在我想比较k2列和k1列的差异,得到cassandra的结果:
关键字:列:
.........................................................................

k1:{col1:“安迪”v1:“100”}{col2:“汤姆”v2:“100”}

k2:{col1:“安迪”v1:“120”差异:20}{col2:“汤姆”v2:“90”差异:-10}

一开始我想用hadoop编写代码,但我发现一个问题,我不能为map进程定义两个键?
选择haddop是因为它必须是一个可扩展的解决方案。
我希望任何人都有一个窍门?
背景,丹尼

qlckcl4x

qlckcl4x1#

我不明白用哪一行来表示减法的基?k1[v1]-k2[v1]或相反?
好的,假设带有最近时间戳的行是一个基。
Map步骤应发出以下信息(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}

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

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

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

现在在reduce步骤中,您可以轻松地执行减法,并将必要的列(如“diff”)写入数据库

相关问题