2016-10-12 4 views
2

同様の質問が表示されます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 
+0

ノートブックを両方ともエクスポートして提供できますか?また、Spark、Igniteなどの起動方法を説明し、問題を再現できるようにテストを実行してください。 –

答えて

2

おそらく、あなたは新しいキャッシュを作成すると、同じ上記のコードを試してみてください。キャッシュが最初に作成された古いキャッシュ構成を参照していると思います。または、キャッシュを破棄し、同じ名前と上記の構成で再作成してみてください。

関連する問題