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