我两天前就开始探索spark了。所以我对它还很陌生。我的用例是在我的scala代码中访问外部jar中的java函数,这是我用spark-shell编写的。但我想我没有正确加载我的罐子。下面是我正在做的事情
spark-shell --master local[2] --jars pathToJarsWithComma --conf="spark.driver.extraClassPath=pathToJarsWithColon" --conf="spark.executor.extraClassPath=pathToJarsWithColon"
这就是我如何启动我的spark-shell,并传递所有需要的jars。每当我尝试调用java静态函数时,如下所示:
rdd1.collect.foreach(a=>MyClass.myfuncttion(a))
我收到以下错误:
<console>:26: error: not found: value MyClass
我想知道我的理解是否正确。我们可以通过加载外部jars在spark中使用java函数吗?如果是,那么我在这里做错了什么。请给我引路。
发布于 2019-03-26 07:04:06
我们可以通过加载外部jars来加载Spark中的java函数。我不确定您是否需要在末尾添加的conf才能使其工作。对我来说,我尝试了以下方法来测试在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访问字段。您还可以测试是否可以通过一个简单的字段访问Class。
https://stackoverflow.com/questions/55332465
复制相似问题