2017-02-22 17 views
1

Javaのscala code snippetの正確な翻訳は何ですか?Spark Javaのデータセット上でUDFを呼び出す方法

import org.apache.spark.sql.functions.udf 
def upper(s:String) : String ={ 
    s.toUpperCase 
} 
val toUpper = udf(upper _) 
peopleDS.select(peopleDS(“name”),toUpper(peopledS(“name”))).show 

import org.apache.spark.sql.api.java.UDF1; 
UDF1 toUpper= new UDF1<String, String>() { 
      public String call(final String str) throws Exception { 
       return str.toUpperCase(); }}; 

peopleDS.select(peopleDS.col("name"), /*how to run toUpper("name"))?????*/.show(); 

注:udfを登録してからselectExprを使用して電話をかけますが、上記と同様のものが必要です。

の作業例:登録なしUDFを呼び出すJavaで

sqlContext.udf().register("toUpper",(String s)->s.toUpperCase(), DataTypes.StringType); 
peopleDF.selectExpr("toUpper(name)","name").show(); 

答えて

3

ができません。 Using UDFs in Java without registrationにご確認ください。以下はあなたのUDFです。

private static UDF1 toUpper = new UDF1<String, String>() { 
    public String call(final String str) throws Exception { 
     return str.toUpperCase(); 
    } 
}; 

機能を使用できます。

import static org.apache.spark.sql.functions.callUDF; 
import static org.apache.spark.sql.functions.col; 

sqlContext.udf().register("toUpper", toUpper, DataTypes.StringType); 
peopleDF.select(col("name"),callUDF("toUpper", col("name"))).show(); 
+0

ありがとう –

関連する問題