【发布时间】:2018-05-14 18:37:00
【问题描述】:
我在 Docker 中有一个 Spark 集群,有 1 个 Master 和 2 个 Worker。在每个工人身上运行一个 Apache Ignite 软件。
如果我打开 spark-shell 并执行以下命令(我打开缓存存储一些值并从缓存中读取数据):
import org.apache.ignite.spark._
import org.apache.ignite.configuration._
val ic = new IgniteContext(sc, () => new IgniteConfiguration())
val sharedRDD: IgniteRDD[Integer, Integer] = ic.fromCache[Integer, Integer]("partitioned")
sharedRDD.savePairs(sc.parallelize(1 to 100, 10).map(i => (i, i)))
sharedRDD.count
然后我收到:
res3: Long = 100
如果我执行sharedRDD.collect().foreach(println),列表中的每个数字对都在 100 之前
(1,1)
(2,2)
(3,3)
(4,4)
(5,5)
(6,6)
(7,7)
(8,8)
(9,9)
(10,10)
...
(100,100)
完美。
但是当我使用 sys.exit 退出并再次重新打开 spark-shell 并执行以下代码时(我从缓存中读出数据):
import org.apache.ignite.spark._
import org.apache.ignite.configuration._
val ic = new IgniteContext(sc, () => new IgniteConfiguration())
val sharedRDD: IgniteRDD[Integer, Integer] = ic.fromCache[Integer, Integer]("partitioned")
sharedRDD.count
sharedRDD.collect().foreach(println)
那么结果就是
res0: Long = 60
并且缺少一些数字对。 (例如 4,9,10)
(1,1)
(2,2)
(3,3)
(5,5)
(6,6)
(7,7)
(8,8)
(11,11)
(12,12)
(13,13)
(14,14)
(15,15)
...
有人知道为什么会这样吗?
【问题讨论】:
标签: scala apache-spark ignite