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

时间:2019-03-25 06:45:10

标签: java scala apache-spark jar spark-shell

两天前,我已经开始探索星火。所以我很陌生。我的用例是在我用spark-shell编写的Scala代码中访问外部jar中存在的Java函数。但我认为我无法正确加载我的罐子。这是我在做什么

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函数吗?如果是,那么我在这里做错了。请指导。

1 个答案:

答案 0 :(得分:0)

我们可以通过加载外部jar来在Spark中加载Java函数。我不确定是否需要在最后添加的conf才能完成此工作。对我来说,我尝试了以下方法来测试将罐子放入火花壳中。

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