java - 使用适用于 Cassandra 的 Apache Spark Java 连接器(使用键列)从 Cassandra DB 中删除行

标签 java apache-spark cassandra spark-cassandra-connector

我正在使用 Apache Spark 2.0、Apache Cassandra 3.7 和 Apache Spark Java Connector for Cassandra 2.11 (2.0.0-M3)

我想根据关键列值从 Cassandra 的表中删除几行。如何使用 Dataset 和 Apache Spark Java Connector for Cassandra 来实现这一点?我在代码中使用 SparkSession。请建议。如果还有其他方法可以做到这一点,请告诉我。我想用 Java 来做。

谢谢。

最佳答案

用于删除 Cassandra 记录的deleteFromCassandra() 功能将在新的 Cassandra 连接器版本中推出。请查看SPARKC-349SPARKC-392了解更多详情。

要使用 Cassandra 连接器从 Cassandra 删除行,您可以执行如下操作。举例来说,我的表中有诸如 id UUID PRIMARY KEY, username TEXT 之类的列。现在我想删除用户名等于“Mat”的所有行。为此,从 Cassandra 连接器获取 session 并执行删除查询。

dataset.where(dataset.col("username").equalTo("Mat")).foreachPartition(partition -> {
Session session = connector.openSession();
        while (partition.hasNext()) {
            Row row = partition.next();
            String id = (String) row.get(0);//UUID is at index 0
            String delete = "DELETE FROM mykeyspace.mytable where id=" + id + ";";
            session.execute(delete);
        }
        session.close();
    });

关于java - 使用适用于 Cassandra 的 Apache Spark Java 连接器(使用键列)从 Cassandra DB 中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41460892/

相关文章:

java - 作业 编写一个测试程序,提示用户输入一个整数并报告该整数是否为回文

java - 如何在提示使用java输入密码时执行cmd行

apache-spark - Py4JJavaError : An error occurred while calling o389..csv

apache-spark - Spark 如何在 RDD 的每个部分中查看数据

database - 在 Cassandra 中存储上次触摸时间的最佳方式

apache-spark - 使用 apache flink Java API 将数据读写到 cassandra 中

java - 为 JAX-RS servlet 初始化 Memcached/JDBC 资源

java - 访问 URL 的特定部分

scala - Spark中的FP增长模型

database-design - 为现有模式建议 Cassandra 数据模型