Sparkの詳細を追加する必要はありません(Sparkクラスを使用する必要がない限り)。次に例を示します。
[email protected]:~> cat MyClass.java
public class MyClass
{
public static int add(int x, int y)
{
return x + y;
}
}
[email protected]:~> javac MyClass.java
[email protected]:~> jar cvf MyJar.jar MyClass.class
added manifest
adding: MyClass.class(in = 244) (out= 192)(deflated 21%)
[email protected]:~> spark --jars ./MyJar.jar
Welcome to
____ __
/__/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.0.1
/_/
Using Scala version 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_111)
Type in expressions to have them evaluated.
Type :help for more information.
scala> MyClass.add(2,3)
res0: Int = 5
この場合、Scalaはそう何スカラ/ Javaの相互運用性の考慮事項はありませんでしたプリミティブのJava int
としてscala.Int
を使用することができました。関数によっては、これについて考える必要があるかもしれませんが、それはSparkの問題ではなくScala-Javaの問題です。
カスタムJava関数を記述し、それをSpark UDFとして登録することができます。または、Spark DataFrameまたはDataSetで何らかの処理を行う関数を記述することもできます。 UDFなしで既存のSpark DataFrame関数を使用することができれば、おそらくこれが望ましい方法です。 – clay