Spark Cassandra Connector时间戳

时间:2017-03-14 16:04:11

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

val timestamp: Long = System.currentTimeMillis - (2629746 * 1000)
sc.cassandraTable("keyspace", "users").select("id").where("timestamp > ?", timestamp).cassandraCount()

"时间戳"这是一个标准的cassandra类型时间戳,并按此格式化。

我想将我的时间戳转换为正确的格式,以便我可以找到具有在过去30天内更新的时间戳的任何用户记录,但我不确定如何在scala中正确格式化它。我看到datastax cassandra连接器中有一个TimestampFormatter类,但我不能让它适用于我。

1 个答案:

答案 0 :(得分:0)

您不会在那里使用该方法,而是将timeuuid分配给各个更新。因此,更新会将群集密钥设为timestamp timeuuid CLUSTERING ORDER BY(timestamp descending)

import com.datastax.driver.core.utils.UUIDs

sc.cassandraTable("keyspace", "users")
  .select("id")
  .where("timestamp > ?", UUIDs.startOf(timeuuid))
  .cassandraCount()

或者您可以使用minTimeUUIDmaxTimeUUID

val now = DateTime.now(DateTimeZone.UTC)
val start = now.plusDays(-30)


sc.cassandraTable("keyspace", "users")
  .select("id")
  .where("timestamp >= minTimeUUID(start.toISOString))
  .and(("timestamp <= maxTimeUUID(now.toISOString)))
  .cassandraCount()