2016-04-28 7 views
0

選択クエリに基づいていくつかのレコードを削除する方法はありますか?重複が表示されます、私はこのクエリを持ってスパークSQLのcassandraレコードの削除

Select min(id) from ID having count(*)>1。それらのIDを取得して削除する必要があります。どのようにspark SQLでそれを行うことができますか?

答えて

0

Spark SQLはDELETEをサポートしていません。

削除するIDの数が少ない場合は、スパークを通じてカサンドラドライバを使用して、代わりにそれを行うことができます。

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 
関連する問題