2016-08-14 5 views
3

spark 1.6.1を使用してcsvファイルを書き込もうとしています。sparkでcsvファイルを書き込めません

date,apples,peaches,pears 
1990,2,2,1 
1991,3,1,1 
1992,1,2,2 

私は、ファイルをロードするために、このScalaのコードを使用しています:

spark-shell --packages com.databricks:spark-csv_2.11:1.2.0 

import org.apache.spark.SparkContext 
import org.apache.spark.SparkConf 
import org.apache.spark.sql.SQLContext 
import org.apache.spark.sql.functions._ 

val sqlContext = new SQLContext(sc) 

var df = sqlContext.read.format("com.databricks.spark.csv").option("header","true").option("inferSchema", "true").load("data/sample.csv") 

df = df.withColumn("year", df.col("date").substr(0,4)) 
df.groupBy("year").pivot("category").agg("category"->"count").show() 
を私はこのような出力CSVファイルを作成したい

date,category 
19900108,apples 
19900108,apples 
19900308,peaches 
19900408,peaches 
19900508,pears 
19910108,pears 
19910108,peaches 
19910308,apples 
19910408,apples 
19910508,apples 
19920108,pears 
19920108,peaches 
19920308,apples 
19920408,peaches 
19920508,pears 

: は、私はこのようなCSVファイルを持っていると言います

これを実行すると、私はこのデータフレームを得ることができます。これは私が欲しいものです。

+----+------+-------+-----+ 
|year|apples|peaches|pears| 
+----+------+-------+-----+ 
|1990|  2|  2| 1| 
|1991|  3|  1| 1| 
|1992|  1|  2| 2| 
+----+------+-------+-----+ 

しかし、私はこのコードを使用してCSVにこれを書いてみる:

df.coalesce(1).write.format("com.databricks.spark.csv").option("header", "true").save("mydata4.csv") 

これは私が探しています何をされていない、私はそれを開いたとき、私は取得していますcsvファイルです。

date,category,year 
19900108,apples,1990 
19900108,apples,1990 
19900308,peaches,1990 
19900408,peaches,1990 
19900508,pears,1990 
19910108,pears,1991 
19910108,peaches,1991 
19910308,apples,1991 
19910408,apples,1991 
19910508,apples,1991 
19920108,pears,1992 
19920108,peaches,1992 
19920308,apples,1992 
19920408,peaches,1992 
19920508,pears,1992 

何か不足していますか?私は何か間違っているのですか?

答えて

3

クエリの結果を新しい変数に保存するのを忘れてしまった。

val xf = df.groupBy("year").pivot("category").agg("category"->"count") 

最後のコード行を使用して書き込みます。

xf.coalesce(1).write.format("com.databricks.spark.csv").option("header", "true").save("mydata4.csv") 
+0

ありがとうございました。それはそれをした – ronmac

関連する問題