После spark-cassandra-connector's demo и Installing the Cassandra/Spark OSS Stack, под свечой скорлупе, я попытался следующий фрагмент кода:Почему функция map sc.cassandraTable («test», «users»). Select («username») не может работать?
sc.stop
val conf = new SparkConf(true)
.set("spark.cassandra.connection.host", "172.21.0.131")
.set("spark.cassandra.auth.username", "adminxx")
.set("spark.cassandra.auth.password", "adminxx")
val sc = new SparkContext("172.21.0.131", "Cassandra Connector Test", conf)
val rdd = sc.cassandraTable("test", "users").select("username")
Многие операторы rdd
могут работать нормально, такие как:
rdd.first
rdd.count
Но когда я использую map
:
val result = rdd.map(x => 1) //just for simple
result: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[61] at map at <console>:32
Затем я запускаю:
result.first
я получил следующие ошибки:
15/12/11 15:09:00 WARN TaskSetManager: Lost task 0.0 in stage 31.0 (TID 104, 124.250.36.124): java.lang.ClassNotFoundException:
$line346.$read$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$anonfun$1
Caused by: java.lang.ClassNotFoundException: $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$anonfun$1
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:278)
at org.apache.spark.serializer.JavaDeserializationStream$$anon$1.resolveClass(JavaSerializer.scala:67)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
Я не знаю, почему я получил такую ошибку? Любые советы будут оценены!
ОБНОВЛЕНО: По ответ @RussSpitzer «с для CassandraRdd.map(row => row.getInt("id)) does not work , java.lang.ClassNotFoundException happened!, я решил эту ошибку с помощью следующих ошибок, вместо того, чтобы использовать sc.stop
и создавая новый SparkContext
, я начинаю spark-shell
с опциями:
bin/spark-shell -conf spark.cassandra.connection.host=172.21.0.131 --conf spark.cassandra.auth.username=adminxx --conf spark.cassandra.auth.password=adminxx
И тогда все шаги одинаковы и работают нормально.
после любого изменения вам необходимо восстановить ваш проект, а затем запустить программу – Kaushal
Это странная один, но вы можете быть с пространством имен столкновения, потому что ваш РДД называется рдд, попробуйте его с другим именем переменным может быть? –
Я называю 90% моих RDD 'rdd'. Зачем это было что-то? Вы можете перечислить переменные так, как вам нравится. –