spark-shell - не может получить доступ к java-функциям в jar-файлах - PullRequest
0 голосов
/ 25 марта 2019

Я начал изучать искру 2 дня назад. Так что я новичок в этом. Мой пример использования - доступ к java-функции, присутствующей во внешнем jar-коде в моем scala-коде, который я пишу в spark-shell. Но я думаю, что я не загружаю свою банку должным образом. Вот что я делаю

spark-shell --master local[2] --jars pathToJarsWithComma --conf="spark.driver.extraClassPath=pathToJarsWithColon" --conf="spark.executor.extraClassPath=pathToJarsWithColon"

Вот так я запускаю свою искровую оболочку со всеми необходимыми банками. И всякий раз, когда я пытаюсь вызвать статическую функцию Java, например:

rdd1.collect.foreach(a=>MyClass.myfuncttion(a))

Я получаю сообщение об ошибке:

<console>:26: error: not found: value MyClass

Я хочу знать, правильно ли мое понимание. Можем ли мы использовать Java-функции в Spark, загружая внешние JAR-файлы. Если да, то что я тут не так делаю. Пожалуйста, руководство.

1 Ответ

0 голосов
/ 26 марта 2019

Мы можем загружать Java-функции в Spark, загружая внешние jar-файлы.Я не уверен, что вам понадобятся ссылки, которые вы добавили в конце, чтобы сделать эту работу.Для меня я попробовал следующее, чтобы проверить загрузку jar в оболочке искры.

./bin/spark-shell --master <spark url>  --jars /home/SparkBench/Terasort/target/jars/guava-19.0-rc2.jar

После этого в оболочке я попытался получить доступ к полю из класса в jar.

scala> import com.google.common.primitives.UnsignedBytes
import com.google.common.primitives.UnsignedBytes
scala> UnsignedBytes.MAX_POWER_OF_TWO
res0: Byte = -128

Как видите, я смог получить доступ к полям из внешнего jar.Вы также можете проверить, можете ли вы получить доступ к классу с помощью простого поля из него.

...