#apache-spark #rdd #ignite
#apache-spark #rdd #ignite
Вопрос:
Мне удалось выполнить несколько заданий Spark для вычисления RDD, и, в конце концов, я хотел бы поместить некоторые из этих данных в Ignite Cache. К сожалению, я получил ошибку :
Java.lang.ClassCastException: org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl cannot be cast to org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy
[info] at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.equals(GatewayProtectedCacheProxy.java:1715)
[info] at scala.collection.mutable.FlatHashTable$class.findElemImpl(FlatHashTable.scala:131)
[info] at scala.collection.mutable.FlatHashTable$class.containsElem(FlatHashTable.scala:124)
[info] at scala.collection.mutable.HashSet.containsElem(HashSet.scala:40)
[info] at scala.collection.mutable.HashSet.contains(HashSet.scala:57)
[info] at org.apache.spark.serializer.SerializationDebugger$SerializationDebugger.visit(SerializationDebugger.scala:87)
[info] at org.apache.spark.serializer.SerializationDebugger$SerializationDebugger.visitExternalizable(SerializationDebugger.scala:142)
[info] at org.apache.spark.serializer.SerializationDebugger$SerializationDebugger.visit(SerializationDebugger.scala:104)
[info] at org.apache.spark.serializer.SerializationDebugger$SerializationDebugger.visitSerializable(SerializationDebugger.scala:206)
[info] at org.apache.spark.serializer.SerializationDebugger$SerializationDebugger.visit(SerializationDebugger.scala:108)
[info] at org.apache.spark.serializer.SerializationDebugger$.find(SerializationDebugger.scala:67)
[info] at org.apache.spark.serializer.SerializationDebugger$.improveException(SerializationDebugger.scala:41)
[info] at org.apache.spark.serializer.JavaSerializationStream.writeObject(JavaSerializer.scala:46)
[info] at org.apache.spark.serializer.JavaSerializerInstance.serialize(JavaSerializer.scala:100)
[info] at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:400)
[info] at org.apache.spark.util.ClosureCleaner$.org$apache$spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:393)
[info] at org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:162)
[info] at org.apache.spark.SparkContext.clean(SparkContext.scala:2326)
[info] at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:371)
[info] at org.apache.spark.rdd.RDD$$anonfun$map$1.apply(RDD.scala:370)
[info] at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
[info] at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
[info] at org.apache.spark.rdd.RDD.withScope(RDD.scala:363)
[info] at org.apache.spark.rdd.RDD.map(RDD.scala:370).........
Итак, мой вопрос заключается в том, как поместить данные, поступающие из spark rdd, в конкретный Ignite Cache, в нашем случае, в Ignite Cache с 3-м хранилищем кэша сохраняемости, реализованным на Postgres?
Комментарии:
1. Можете ли вы поделиться частью своего кода?
2.Я также пытался использовать
IgniteRDD
savePairs
, но это очень медленно.3. Я предполагаю, что у вас есть какая-то функция spark pair, которая содержит прокси-сервер кэша внутри или что-то в этом роде. Вот почему Стивен попросил пример кода. Пожалуйста, предоставьте это. Кроме того, я предлагаю взглянуть на эту статью, она содержит пример использования ignite Data Drames. Это довольно проще, чем использовать RDD. gridgain.com/resources/blog/how-debug-data-loading-spark-ignite