2016-05-19 10 views
-1

UDFを使用すると、各要素が個別にパラメータで渡されなければならないことが暗示されます。柔軟なソリューションはありますか?これらの要素のシーケンスをどのようにしてUDFに渡すか?2次元配列をユーザー定義関数に渡すにはどうすればよいですか?

val myFunction = udf { 
     (userBias: Float, productBias: Float, productBiases: Map[Long, Float], 
     userFactors: Seq[Float], productFactors: Seq[Float], c1: String, c2: String, c3: String) => 

     var result = Float.NaN 

     // result calculation 

     result 
    } 

そして私は、以下の方法(datasetDataFrameである)、この関数を呼び出す:

myFunction(userBias("bias"), 
      productBias("bias"), 
      productBias("biases"), 
      userFactors("features"), 
      productFactors("features"), 
      dataset(factors(0)), dataset(factors(1)), dataset(factors(2)) 

私はこのような何かをした場合、コンパイラは、 "該当なし" と言う:

val myFactors = dataset.select(factors.head, factors.tail: _*) 

myFunction(userBias("bias"), 
      productBias("bias"), 
      productBias("biases"), 
      userFactors("features"), 
      productFactors("features"), 
      myFactors) 
+0

? – Klue

答えて

0

このような2次元アレイを使用している場合:

val xy = Array.ofDim[Int](numrows, numcolumns); 
isFunction(xy); 

isFunctionのためのあなたの関数定義は次のようになります。質問がdownvotedされたのはなぜ

def isFunction(arg: Array[Array[Int]]){ 
    println(arg(i)(0)); // how to access array element 
関連する問題