2016-04-28 5 views
0

Есть ли способ удалить некоторые записи на основе выбранного запроса?Spark SQL cassandra delete records

У меня есть этот запрос,

Select min(id) from ID having count(*)>1 который покажет дубликаты. Мне нужно получить эти идентификаторы и удалить их. Как я могу сделать это в искровом sql?

ответ

0

Spark SQL не поддерживает DELETE.

Если число идентификаторов удаляемого мало, вы можете сделать это с помощью драйвера Кассандры, а не через 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