Spark SQL cassandra 删除记录

Posted

技术标签:

【中文标题】Spark SQL cassandra 删除记录【英文标题】:Spark SQL cassandra delete records 【发布时间】:2016-04-28 04:48:48 【问题描述】:

有没有办法根据选择查询删除一些记录?

我有这个问题,

Select min(id) from ID having count(*)>1 将显示重复项。我需要获取这些 ID 并删除它们。如何在 spark sql 中做到这一点?

【问题讨论】:

【参考方案1】:

Spark SQL 不支持 DELETE。

如果要删除的 id 数量很少,您可以使用 Cassandra 驱动程序而不是通过 Spark:

import scala.collection.JavaConverters._
import scala.collection.JavaConversions._
import com.datastax.driver.core.Cluster, Session, BatchStatement
import com.datastax.driver.core.querybuilder.QueryBuilder

val cluster = Cluster.builder().addContactPoint(host_ip).build()
val session = cluster.connect(keyspace)

val idsToDelete = ... // perform your query and collect the ids

val queries = idsToDelete.map( id => QueryBuilder.delete().from(keyspace, table).where(QueryBuilder.eq("id", id)) )
val batch = batchStatement().addAll(queries.asJava)
session.execute(batch)

cluster.close

【讨论】:

以上是关于Spark SQL cassandra 删除记录的主要内容,如果未能解决你的问题,请参考以下文章

用于 Cassandra 的 Spark2 会话,sql 查询

Spark 1.3.x 的 org.apache.spark.sql.cassandra 的 API 文档在哪里?

无法导入 org.apache.spark.sql.cassandra.CassandraSQLContext

如何在 Spark 结构化流式连接中选择最新记录

使用 JDBC(例如 Squirrel SQL)用 Spark SQL 查询 Cassandra

将 Spark SQL Hive 服务器连接到 Cassandra?