同様の質問が表示されますhere。しかし、この質問では、必要に応じて詳細と実行可能コードを追加しようとしました。ここでも私はZeppelin経由でこのコードを実行しています。ここでjavax.cache.CacheException:cache:testのインデックスが無効です。 CacheConfigurationでsetIndexedTypesまたはsetTypeMetadataメソッドを使用して有効にする
はツェッペリンのノートブックからコードスニペットです:
ノート-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:ノートブック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")
最初のノートブックからのコードが正常に実行されます。しかし、2番目のノートブックを実行している間、ヘッダに記載されている例外を除いて失敗しています。
全例外:
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
ノートブックを両方ともエクスポートして提供できますか?また、Spark、Igniteなどの起動方法を説明し、問題を再現できるようにテストを実行してください。 –