@Frankie хорошо, теперь все понятно, как это работает, отлично :)

rk Job я не знаю, как импортировать и использовать банки, которые разделяются методомSparkContext.addJar(), Кажется, что этот метод может перемещать банки в какое-то место, доступное для других узлов в кластере, но я не знаю, как их импортировать.
Это пример:

package utils;

public class addNumber {
    public int addOne(int i){
        return i + 1;
    }
    public int addTwo(int i){
        return i + 2;
    }
}

Я создаю класс с именем addNumber и превращаю его в файл JARutils.jar.

Затем я создаю искровую работу, и коды показаны ниже:

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

object TestDependencies {
  def main(args:Array[String]): Unit = {
    val sparkConf = new SparkConf
    val sc = new SparkContext(sparkConf)
    sc.addJar("/path/to//utils.jar")

    val data = 1 to 100 toList
    val rdd = sc.makeRDD(data)

    val rdd_1 = rdd.map ( x => {
      val handler = new utils.addNumber
      handler.addOne(x)
    } )

    rdd_1.collect().foreach { x => print(x + "||") }
  }
}

Ошибка "java.lang.NoClassDefFoundError: utils / addNumber" возникла после отправки задания с помощью команды"spark-submit".

Я знаю этот методaddJar() не гарантирует банки, включенные в классовую дорожку искровой работы. Если я хочу использовать файлы JAR, я должен переместить все зависимости в один и тот же путь в каждом узле кластера. Но если я могу переместить и включить все банки, какой смысл использовать методaddJar()?

Мне интересно, если есть способ, используя банки, импортированные методомaddJar(), Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос