2017-06-01 2 views
-1

私はiOSの開発者であり、今度はsparkに切り替わります。私はSpark RDDでMaxとMinを1つの集合関数でどのように見つけることができるか知りたいですか? (Preferred Spark SQL) たとえば、私のcsvファイルにsalaryカラムがあり、これをSpark RDDに変換したいのですが、単一の関数を使用してMaxとMinを検索したいのですが、どうやってcsvファイルをRDD(スカラーが望ましい)。 私はそれをデータフレームで変換したくありません。私は最大と最小を1つの集約関数とそれをRDDで見つけることを望みます。私はMaxとMinを2度使いたくない。 spark scalaMaxMinを見つけるspark RDDで単一集計関数を使ってmaxとminを見つける方法は?

+0

あなたのユースケースは少しですか?また、あなたが達成しようとしているもののいくつかの例のコードも役に立ちます。 – Tawkir

+0

私のcsvファイルにsalaryカラムがあり、それをSpark RDDに変換したいと思い、シングル関数を使ってMaxとminを探したいとします。 –

答えて

2

MinMaxを見つけることです。

集計値は、それは、あなたがすることができ、それらを持つ集計結果を結合するために2つの機能を必要とし

def comb[T](left: MinMax[T], right: MinMax[T])(implicit ordering: Ordering[T]): MinMax[T] = { 
    MinMax(min = ordering.min(left.min, right.min), max = ordering.max(left.max, right.max)) 
} 

def seq[T](minMax: MinMax[T], value: T)(implicit ordering: Ordering[T]): MinMax[T] = { 
    comb(minMax, MinMax(value, value)) 
} 

を凝集するために、新たな価値を付加minとmax

case class MinMax[T](min: T, max: T) 

の両方を保存するカスタムオブジェクトでなければなりません集計、例えばrdd Long

val minMax = rdd.aggregate(MinMax(Long.MaxValue, Long.MinValue))((mm, t) => seq(mm, t), (l, r) => comb(l, r)) 
val min = minMax.min 
val max = minMax.max 
+0

Spark SQLで実行する方法はありますか? –

+0

はい、この回答を見てくださいhttps://stackoverflow.com/a/36051300/187261 –

+0

ありがとう、私は2つの質問があります。私はあなたにメールしてもらえますか?両方の質問は難しいことではなく、私はスパークするために新しいので、私は問題に直面している。 –

1

方法の一つは、あなたのRDDdataframeに変換し、あなたがカスタム集計を実行するためにaggregate functionを使用することができますaggregationmore info

関連する問題