如何知道在cassandra中使用Spark插入的行数
How to know no of rows Inserted using Spark In cassandra
我正在使用 Spark 插入到 cassandra 中。
CassandraJavaUtil.javaFunctions(newRDD)
.writerBuilder("dmp", "dmp_user_user_profile_spark1", mapToRow(UserSetGet.class)).saveToCassandra();
logger.info("DataSaved");
我的问题是 RDD 是否有 5k 行,并且由于某种原因插入 Cassandra 时作业失败。
从 5k 中插入的行是否会回滚
如果没有,我怎么知道实际插入了多少行,这样我就可以从失败的行重新开始我的工作。
简单回答,不会,不会自动回滚
无论 spark 能够保存到 cassandra 中的什么数据,都将持久保存到 cassandra 中。
不,没有简单的方法可以知道直到什么数据集,spark 作业才能成功保存。事实上,我唯一能想到的方法是,从 cassandra 读取数据,根据键从结果集中加入和过滤掉。
老实说,如果要进行大量连接,数据量很大,这似乎相当开销。在大多数情况下,您可以简单地在 spark 上重新 运行 作业,然后让它再次保存到 cassandra table。
因为,在 cassandra 中,更新和插入的工作方式相同。不会有问题的。
唯一可能有问题的地方是,如果您正在处理计数器 tables。
更新:
对于这种特定情况,您可以将您的 rdd 分成您的大小的批次,然后尝试保存它们。
这样,如果你在一个 rdd 上失败了,你就会知道是哪个 rdd 失败了。如果不是那个集合,你肯定可以从下一个 rdd 中获取。
我正在使用 Spark 插入到 cassandra 中。
CassandraJavaUtil.javaFunctions(newRDD)
.writerBuilder("dmp", "dmp_user_user_profile_spark1", mapToRow(UserSetGet.class)).saveToCassandra();
logger.info("DataSaved");
我的问题是 RDD 是否有 5k 行,并且由于某种原因插入 Cassandra 时作业失败。
从 5k 中插入的行是否会回滚
如果没有,我怎么知道实际插入了多少行,这样我就可以从失败的行重新开始我的工作。
简单回答,不会,不会自动回滚
无论 spark 能够保存到 cassandra 中的什么数据,都将持久保存到 cassandra 中。
不,没有简单的方法可以知道直到什么数据集,spark 作业才能成功保存。事实上,我唯一能想到的方法是,从 cassandra 读取数据,根据键从结果集中加入和过滤掉。
老实说,如果要进行大量连接,数据量很大,这似乎相当开销。在大多数情况下,您可以简单地在 spark 上重新 运行 作业,然后让它再次保存到 cassandra table。 因为,在 cassandra 中,更新和插入的工作方式相同。不会有问题的。
唯一可能有问题的地方是,如果您正在处理计数器 tables。
更新: 对于这种特定情况,您可以将您的 rdd 分成您的大小的批次,然后尝试保存它们。 这样,如果你在一个 rdd 上失败了,你就会知道是哪个 rdd 失败了。如果不是那个集合,你肯定可以从下一个 rdd 中获取。