私はScalaを使用しており、独自のDataFrame関数を構築したいと考えています。たとえば、配列のような列を扱い、各要素を繰り返し処理して計算したいとします。Sparkビルドカスタム列関数、ユーザ定義関数
まず、私自身のgetMaxメソッドを実装しようとしています。だから、列xが値[3,8,2,5,9]を持っているだろう、と予想される方法の出力は、ここでは9
だろうこれは、Scalaの
def getMax(inputArray: Array[Int]): Int = {
var maxValue = inputArray(0)
for (i <- 1 until inputArray.length if inputArray(i) > maxValue) {
maxValue = inputArray(i)
}
maxValue
}
で次のようになります私がこれまで持っているものである、と
"value length is not a member of org.apache.spark.sql.column",
をこのエラーを取得し、私は列を反復処理する方法を他に知りません。
def getMax(col: Column): Column = {
var maxValue = col(0)
for (i <- 1 until col.length if col(i) > maxValue){
maxValue = col(i)
}
maxValue
}
私は自分自身のメソッドを実装することができていたら、私は
val value_max:org.apache.spark.sql.Column=getMax(df.col(“value”)).as(“value_max”)
列関数を作成します。そして私は、SQL文でこれを使用することができるように願って、例えば
val sample = sqlContext.sql("SELECT value_max(x) FROM table")
とに期待される出力は、入力列[3,8,2,5,9]与えられ、9なり
別のスレッドSpark Scala - How do I iterate rows in dataframe, and add calculated values as new columns of the data frameからの回答に続いて、標準偏差のプライベートメソッドを作成します。 私が行う計算はこれよりも複雑になります(たとえば、列の各要素を比較しています)、正しい方向に進むのか、ユーザー定義関数を詳しく調べるべきですか?
あなたの入力と出力/期待されるデータフレームを表示してください。 'show'を使います。 –
こんにちは@JacekLaskowskiはコメントをありがとう、私はそれを明確に私が達成したいと思うように編集しました。 – other15