【问题标题】:Hadoop and Cassandra to Compare 2 RowsHadoop 和 Cassandra 比较 2 行
【发布时间】:2013-07-03 15:03:26
【问题描述】:

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

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: "Andy" V1: "120" Diff: 20} {Col2: "Tom" V2: "90" Diff: -10}

起初我想用 Hadoop 编写代码,但我看到了一个问题,我无法为 Map Process 定义两个键?

选择 Haddop 是因为它必须是可扩展的解决方案。

希望有人给点小费吗?

背景, 丹尼

【问题讨论】:

    标签: hadoop cassandra bigdata datastax-enterprise brisk


    【解决方案1】:

    我不明白减法的基数将由哪一行表示? 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”)写入数据库

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-04
      • 2019-04-16
      • 2017-08-27
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      相关资源
      最近更新 更多