私は多くの質問をオンラインで見てきましたが、達成しようとしていることをしていないようです。スパーク:データフレームを集約せずに転記
私はScalaでApache Spark 2.0.2を使用しています。
は、私がデータフレームを持っている:私はpivot()
を使用してみましたが、私は正しい答えを得ることができなかった
+----+-----+----+----+----+
|vals| 1| 2| 3| 4|
+----+-----+----+----+----+
|val1| 100| 0| 0| 0|
|val2| 0| 50| 0| 0|
|val3| 0| 0| 0| 0|
|val4| 0| 0| 0| 0|
|val5| 0| 20| 0| 0|
|val6| 0| 0| 0| 0|
+----+-----+----+----+----+
に移調したい
+----------+-----+----+----+----+----+----+
|segment_id| val1|val2|val3|val4|val5|val6|
+----------+-----+----+----+----+----+----+
| 1| 100| 0| 0| 0| 0| 0|
| 2| 0| 50| 0| 0| 20| 0|
| 3| 0| 0| 0| 0| 0| 0|
| 4| 0| 0| 0| 0| 0| 0|
+----------+-----+----+----+----+----+----+
。私は私のval{x}
列をループして終了し、以下のようにそれぞれをピボットしますが、これは非常に遅いことがわかります。
val d = df.select('segment_id, 'val1)
+----------+-----+
|segment_id| val1|
+----------+-----+
| 1| 100|
| 2| 0|
| 3| 0|
| 4| 0|
+----------+-----+
d.groupBy('val1).sum().withColumnRenamed('val1', 'vals')
+----+-----+----+----+----+
|vals| 1| 2| 3| 4|
+----+-----+----+----+----+
|val1| 100| 0| 0| 0|
+----+-----+----+----+----+
は、その後、私の最初のデータフレームに
val{x}
の各反復に
union()
を使用します。
+----+-----+----+----+----+
|vals| 1| 2| 3| 4|
+----+-----+----+----+----+
|val2| 0| 50| 0| 0|
+----+-----+----+----+----+
私はデータを集約したくない転置のより効率的な方法がありますか?
感謝:)
データフレームでどうすればいいですか? –
あなたは別の答えを期待していますか、既存のものに満足していますか? –