spark-shell - 无法访问 jar 中的 java 函数



我在两天前就开始探索火花了。所以我对它很陌生。我的用例是访问我的 scala 代码中外部 jar 中存在的 java 函数,我正在用 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

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

我们可以通过加载外部jar在Spark中加载java函数。我不确定您是否需要最后添加的confs来完成这项工作。对我来说,我尝试了以下内容来测试将罐子装入火花壳中。

./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 访问字段。您还可以测试是否可以通过类中的简单字段访问该类。

相关内容

  • 没有找到相关文章

最新更新