我使用FiloDB 0.4和Cassandra 2.2.5列和元存储,并尝试使用Spark Streaming 1.6.1 + Jobserver 0.6.2将数据插入其中。我使用以下代码插入数据:
Select-String
段密钥是":string / 0&#34 ;,行键设置为列,对于每一行都是唯一的,并且分区键设置为列,对于所有行都是const。换句话说,我的所有测试数据集都在单个分区上转到单个段。当我使用单个单节点Spark时,一切正常,我可以插入所有数据,但是当我同时运行两个单独的单节点Spark(不是集群)时,我就迷路了大约30-60%的数据,即使我以几秒为间隔一个接一个地发送消息。 我检查了每个消息都执行了dataFrame.write(),所以问题发生在这一行之后。 当我将段密钥设置为每行唯一的列时,所有数据都到达Cassandra / FiloDB。
请向我推荐具有2个独立火花的场景的解决方案。
答案 0 :(得分:1)
@psyduck,这很可能是因为每个分区的数据一次只能在一个节点上被摄取 - 对于0.4版本。因此,要坚持使用当前版本,您需要将数据分区为多个分区,然后确保每个工作程序只获得一个分区。实现上述目标的最简单方法是按分区键对数据进行排序。
我强烈建议您转到最新版本 - master(Spark 2.x / Scala 2.11)或spark1.6 branch(spark 1.6 / Scala 2.10)。最新版本有许多不在0.4的更改可以解决您的问题:
欢迎联系我们的邮件列表https://groups.google.com/forum/#!forum/filodb-discuss