【问题标题】:Cassandra connector -- difference between joinWithCassandraTable and leftJoinWithCassandraTable -- Cannot Resolve symbolCassandra 连接器 -- joinWithCassandraTable 和 leftJoinWithCassandraTable 之间的区别 -- 无法解析符号
【发布时间】:2020-05-27 04:58:20
【问题描述】:

我正在尝试通过使用 datastax cassandra 连接器加入来从 Cassandra 访问数据。下面的代码对我有用。我试图在加入后总结来自 RDD 和 Cassandra 的值列

tm(a.joinWithCassandraTable("ks","tbl").on(SomeColumns("key","key2","key3","key4","key5","key6","key7","key8","key9","key10","key11","key12","key13","key14","key15","column1","column2","column3","column4","column5")).select("value1").map { case (ip, row) => IP(ip.key, ip.key2, ip.key3,ip.key4,ip.key5,ip.key6,ip.key7,ip.key8,ip.key9,ip.key10,ip.key11,ip.key12,ip.key13,ip.key14,ip.key15,ip.column1,ip.column2,ip.column3,ip.column4,ip.column5,ip.value1 + row.getLong("value1")) }.saveToCassandra("ks", "tbl"))

但是,当我尝试进行左连接时,它会给出“无法解析符号 getLong” 我相信这是因为左连接不能保证一个值,因为它可能为空,但我无法在 scala 中对此进行编码。

tm(a.leftJoinWithCassandraTable("ks","tbl").on(SomeColumns("key","key2","key3","key4","key5","key6","key7","key8","key9","key10","key11","key12","key13","key14","key15","column1","column2","column3","column4","column5")).select("value1").map { case (ip, row) => IP(ip.key, ip.key2, ip.key3,ip.key4,ip.key5,ip.key6,ip.key7,ip.key8,ip.key9,ip.key10,ip.key11,ip.key12,ip.key13,ip.key14,ip.key15,ip.column1,ip.column2,ip.column3,ip.column4,ip.column5,ip.value1 + row.getLong("value1")) }.saveToCassandra("ks", "tbl"))

感谢任何帮助。如果有任何需要的信息,请告诉我,我会尽力补充

【问题讨论】:

    标签: apache-spark cassandra datastax spark-cassandra-connector


    【解决方案1】:

    当您没有在 Cassandra 中获取数据时,您应该获取 Option[Row] 而不是 Row 对象。

    你可以写而不是.map { case (ip, row) => ...}

    .map { case (ip, row) => 
      row match {
        case None => ip
        case Some(data) => IP(...., ip.value1 + data.getLong("value1"))
      }
    }
    

    在这种情况下 - 当您没有数据 (None) 时,您只需返回 IP 对象本身,如果您有数据,则构造新的 IP 对象

    【讨论】:

    • 谢谢。有效。我不得不更改整个方法的返回类型以返回 Unit(我之前没有指定任何内容),因为它抛出了一个错误,表明该块是递归的。不知道为什么它是递归的
    猜你喜欢
    • 1970-01-01
    • 2012-05-11
    • 2023-03-08
    • 2011-11-02
    • 2018-04-20
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多