两天前,我已经开始探索星火。所以我很陌生。我的用例是在我用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函数吗?如果是,那么我在这里做错了。请指导。
答案 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。