0

两天前我已经开始探索火花。所以我对它很陌生。我的用例是在我用 spark-shell 编写的 scala 代码中访问外部 jar 中存在的 java 函数。但我认为我没有正确加载我的罐子。这是我正在做的

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

这就是我启动我的 spark-shell 并传递所有必需的 jar 的方式。每当我试图调用java静态函数时:

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

我收到错误消息:

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

我想知道我的理解是否正确。我们可以通过加载外部 jar 在 spark 中使用 java 函数吗?如果是,那么我在这里做错了什么。请指导。

4

1 回答 1

0

我们可以通过加载外部 jars 在 Spark 中加载 java 函数。我不确定您是否需要最后添加的配置文件才能完成这项工作。对我来说,我尝试了以下方法来测试在 spark shell 中加载 jar。

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

之后在 shell 中,我尝试从 jar 中的一个类中访问一个字段。

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

如您所见,我能够从外部 jar 访问字段。您还可以测试您是否可以通过一个简单的字段访问该类。

于 2019-03-25T23:04:05.893 回答