2017-04-23 8 views
0

unionを使用してSparkを使ってヌードリングを行い、適切に大きなテストデータセットを構築します。Sparkデータフレームへの変換を再帰的にscalaで適用できますか?

val df = spark.read.json("/opt/spark/examples/src/main/resources/people.json") df.union(df).union(df).count() しかし、私はこのような何かをしたい:これはOKに動作エラーでbarfs val df = spark.read.json("/opt/spark/examples/src/main/resources/people.json") for (a <- 1 until 10){ df = df.union(df) } <console>:27: error: reassignment to val df = df.union(df) ^ 私はこのテクニックのpythonを使用して動作します知っているが、これは私はスカラ座を使用して私の最初の時間です構文が不明です。

再帰的にデータフレームを自分自身と結合する方法n回ですか?

答えて

1

データセットでvalを使用すると、不変変数になります。つまり、再割り当てはできません。定義をvar dfに変更すると、コードが機能するはずです。

可変データのない機能的なアプローチがある:

val df = List(1,2,3,4,5).toDF 
val bigDf = (for (a <- 1 until 10) yield df) reduce (_ union _) 

ザ・あなたのデータフレームを含む指定した長さのIndexedSeqを作成し、機能が第二と第一DATAFRAME組合それを取るだろうし、起動します短縮されますforループ再度結果を使用します。

forループなしでも短い:

val df = List(1,2,3,4,5).toDF 
val bigDf = 1 until 10 map (_ => df) reduce (_ union _) 
関連する問題