Cassandra火花连接器数据丢失

时间:2015-06-09 09:44:11

标签: scala cassandra apache-spark datastax

我们正在使用datastax spark connector计算一些统计数据。 重复的查询在每次执行时都会返回不同的结果。

背景:我们有约。 3节点cassandra集群中的112K记录。该表具有名为UUID的单个分区键guid列,没有聚类键列。

这是我定义的简单guid提取器来检查损失:

val guids = sc.cassandraTable[UUID]("keyspace","contracts").select("guid")

接下来,我多次多次将数据提取到本地馆藏

val gss = List.fill(20)(Set(guids.collect():_*))
val gsall = gss reduce (_ | _)
val lost = gss map (gsall &~ _ size)

结果lostList(5970, 7067, 6926, 6683, 5807, 7901, 7005, 6420, 6911, 6876, 7038, 7914, 6562, 6576, 6937, 7116, 7374, 6836, 7272, 7312)

所以我们每个查询都有6,17±0,47%个数据丢失

这可能是cassandra,spark或连接器的问题吗?在每种情况下 - 是否存在一些防止这种情况的配置方式?

1 个答案:

答案 0 :(得分:4)

我读过some docs并了解到可以而且应该为这种情况设定阅读能力水平。 宣布后

implicit val readConf = ReadConf.fromSparkConf(sc.getConf).copy(
    consistencyLevel = ConsistencyLevel.ALL)

我得到了稳定的结果。