javax.cache.CacheException:索引已禁用缓存:测试。在 CacheConfiguration 上使用 setIndexedTypes 或 setTypeMetadata 方法来启用
javax.cache.CacheException: Indexing is disabled for cache: test. Use setIndexedTypes or setTypeMetadata methods on CacheConfiguration to enable
有人问了类似的问题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)))
第 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")
第一个笔记本中的代码执行良好。然而,在执行第二个笔记本时,它失败了 header 中提到的异常。
完全异常:
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
也许您应该尝试使用上面的代码创建新的缓存。我认为它指的是最初创建缓存时使用的一些旧缓存配置。或者销毁缓存并尝试使用相同的名称和上述配置重新创建它。
有人问了类似的问题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)))
第 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")
第一个笔记本中的代码执行良好。然而,在执行第二个笔记本时,它失败了 header 中提到的异常。
完全异常:
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
也许您应该尝试使用上面的代码创建新的缓存。我认为它指的是最初创建缓存时使用的一些旧缓存配置。或者销毁缓存并尝试使用相同的名称和上述配置重新创建它。