s3 ファイルからの次の DataFrame 入力があり、データを次の目的の出力に変換する必要があります。Scala で Spark バージョン 1.5.1 を使用していますが、Python で Spark に変更できます。どんな提案でも大歓迎です。
データフレーム入力:
name animal data
john mouse aaaaa
bob mouse bbbbb
bob mouse ccccc
bob dog ddddd
望ましい出力:
john/mouse/file.csv
bob/mouse/file.csv
bob/dog/file.csv
terminal$ cat bob/mouse/file.csv
bbbbb
ccccc
terminal$ cat bob/dog/file.csv
ddddd
以下は、私が試した既存の Spark Scala コードです。
val sc = new SparkContext(new SparkConf())
val sqlc = new org.apache.spark.sql.SQLContext(sc)
val df = sqlc.read.json("raw.gz")
val cols = Seq("name", "animal")
df.groupBy(cols.head, cols.tail: _*).count().take(100).foreach(println)
現在の出力:
[john,mouse,1]
[bob,mouse,2]
[bob,dog,1]
私の既存のコードの問題のいくつかは、groupBy が GroupedData オブジェクトを返し、おそらくそのデータに対して count/sum/agg 関数を実行したくないということです。データをグループ化して出力するためのより良い手法を探しています。データセットは非常に大きいです。