javax.cache.CacheException:对cache:test禁用索引。在CacheConfiguration上使用setIndexedTypes或setTypeMetadata方法来启用

时间:2016-10-12 13:10:33

标签: apache-spark apache-zeppelin ignite

类似的问题被问到here。但是在这个问题中,我试图在需要时包含更多细节和可执行代码。我也在这里通过Zeppelin执行此代码。

以下是Zeppelin笔记本的代码片段:

Notebook-1 - 存储一些数据以点燃缓存。

val ic = new IgniteContext(sc, () => new IgniteConfiguration())

val cacheConfig = new CacheConfiguration[Int, Int]()
    cacheConfig.setName("test")
    cacheConfig.setIndexedTypes(classOf[Int], classOf[Int])

val cacheRdd = ic.fromCache[Int,Int](cacheConfig)

cacheRdd.savePairs(sc.parallelize(1 to 10000, 10).map(i => (i, i)))

part - 2:从我们从notebook-1存储一些数据的缓存中读取。

val ic = new IgniteContext(sc, () => new IgniteConfiguration())
val cacheConfig = new CacheConfiguration[Int, Int]()
  cacheConfig.setName("partitioned")
  cacheConfig.setIndexedTypes(classOf[Int], classOf[Int])

val ic = new IgniteContext(sc, () => new IgniteConfiguration())

val cacheRdd = ic.fromCache(cacheConfig)
cacheRdd.sql("select _val from Integer")

第一台笔记本的代码执行正常。但是,在执行第二个笔记本时,它会失败,并在标题中提到异常。

完全例外:

javax.cache.CacheException: Indexing is disabled for cache: test. Use setIndexedTypes or setTypeMetadata methods on CacheConfiguration to enable.
  at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.validate(IgniteCacheProxy.java:831)
  at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:690)
  at org.apache.ignite.spark.IgniteRDD.sql(IgniteRDD.scala:147)
  ... 64 elided

1 个答案:

答案 0 :(得分:2)

也许你应该尝试使用相同的代码来创建一个新的缓存。我认为它指的是最初创建缓存的一些旧缓存配置。或者销毁缓存并尝试使用相同的名称和上述配置重新创建缓存。