Я использую Spark и Graphx на IntelliJ IDEA в первый раз. Я пытаюсь создать граф и запускать запросы на нем, но я получаю следующую ошибку:Ошибка незаконного доступа в GraphX
java.lang.IllegalAccessError: попытался получить доступ к классу org.apache.spark.util.collection.Sorter из класса org .apache.spark.graphx.impl.EdgePartitionBuilder
Вот мой код:
package org.apache.spark.examples
// import required spark classes
import org.apache.spark._
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.graphx._
import org.apache.spark.rdd.RDD
// define main method (scala entry point)
object HelloWorld {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("HelloWorld")
val sc = new SparkContext(conf)
val vertexArray = Array(
(1L, ("Alice", 28)),
(2L, ("Bob", 27)),
(3L, ("Charlie", 65)),
(4L, ("David", 42)),
(5L, ("Ed", 55)),
(6L, ("Fran", 50))
)
val edgeArray = Array(
Edge(2L, 1L, 7),
Edge(2L, 4L, 2),
Edge(3L, 2L, 4),
Edge(3L, 6L, 3),
Edge(4L, 1L, 1),
Edge(5L, 2L, 2),
Edge(5L, 3L, 8),
Edge(5L, 6L, 3)
)
val vertexRDD: RDD[(Long, (String, Int))] = sc.parallelize(vertexArray)
val edgeRDD: RDD[Edge[Int]] = sc.parallelize(edgeArray)
val graph: Graph[(String, Int), Int] = Graph(vertexRDD, edgeRDD)
// Solution 1
graph.vertices.filter { case (id, (name, age)) => age > 30 }.collect.foreach {
case (id, (name, age)) => println(s"$name is $age")
}
// Solution 2
graph.vertices.filter(v => v._2._2 > 30).collect.foreach(v => println(s"${v._2._1} is ${v._2._2}"))
// Solution 3
for ((id,(name,age)) <- graph.vertices.filter { case (id,(name,age)) => age > 30 }.collect) {
println(s"$name is $age")
}
sc.stop()
}
}
Какие версии вы компилируете и запускаете? Я подозреваю, что это, вероятно, проблема класса. –
версия scala: 2.10.6 Искры версии 1.5.1 на hadoop 2.6 Версия Maven: 3.3.0 – CMWasiq
Какие артефакты вы натягиваете в Maven? –