【问题标题】:how to get Token values when using spark load data from cassandra?使用来自 cassandra 的火花负载数据时如何获取令牌值?
【发布时间】:2019-05-30 09:39:06
【问题描述】:

我使用以下代码从 cassandra 加载数据:

val ts = spark
      .read
      .format("org.apache.spark.sql.cassandra")
      .options(Map("table" -> "t1", "keyspace" -> "keys"))
      .load()

所以,我可以得到所有的列,

现在,我想同时获得令牌,

我知道在 cql 中我们可以将 cql 写成“SELECT k,o, TOKEN(k) as t FROM keys.t1

问题是如何在 spark 中获取令牌? 谢谢。

【问题讨论】:

    标签: scala apache-spark cassandra


    【解决方案1】:

    我没有使用 Spark 语法的经验。但是你必须在执行查询后得到结果集。

    假设您的查询类似于, select token(<partitionKey(s)>) as fetched_token, column1, column2 from <table_name>.

    在遍历 resultSet 中的行时,您可能会得到类似 row.getLong("fetched_token") 的令牌值

    希望对你有帮助。

    【讨论】:

    • 我看到了,你使用了 row.getString 方法。我认为当您将 bigInt 映射到 String 时,Cassandra 驱动器会抛出 codac 异常。这就是我使用Long的原因。如果我错了,请纠正我。
    【解决方案2】:
    connector.withSessionDo { session =>
          val res = session.execute("SELECT k,o,token(k) as t FROM keys.t1")
          import scala.collection.JavaConversions._
          for (row <- res) {
            println(row.getLong("t"))
          }
        }
    

    【讨论】:

      猜你喜欢
      • 2019-06-01
      • 1970-01-01
      • 2019-08-11
      • 2021-07-16
      • 2018-02-11
      • 2016-05-01
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多