如何知道没有行使用Spark在cassandra中插入

时间:2016-03-21 08:53:06

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

我正在使用Spark插入cassandra。

CassandraJavaUtil.javaFunctions(newRDD)
            .writerBuilder("dmp", "dmp_user_user_profile_spark1", mapToRow(UserSetGet.class)).saveToCassandra();
            logger.info("DataSaved");

我的问题是RDD是否有5k行,并且由于某种原因插入Cassandra时作业失败。

对于从5k

插入的行,是否会回滚

如果没有,我怎么知道实际插入了多少行,这样我就可以从失败的行再次开始我的工作。

1 个答案:

答案 0 :(得分:1)

简单回答,不,不会有自动回滚。

无论什么数据火花能够保存到cassandra中,都会持续存在于cassandra中。

不,没有简单的方法可以知道什么数据集,火花作业能够成功保存。事实上,只有我能想到的方法是,从cassandra中读取数据,根据键从结果集中加入和过滤掉。

说实话,如果数据庞大,那么这似乎是非常大的开销。在大多数情况下,您只需在spark上重新运行作业,然后再将其保存到cassandra表中。 因为,在cassandra更新和插入工作方式相同。这不会是个问题。

如果您正在处理计数器表,那么只有这可能有问题。

更新: 对于此特定方案,您可以将rdd拆分为大小的批次,然后尝试保存它们。 这样,如果你在一个rdd失败,你就会知道哪个rdd失败了。如果不是那样,你应该可以从下一个rdd拿起来。