2017-03-21 5 views
0

データフレーム内の定数である列を削除したいのですが、ここでは何をしましたか?データフレームをCSVファイルに書き込むときに特別な作業が必要です、コードを最適化して時間を短縮する助けをお願いします。定数列をcsvファイルにドロップする

val spark = SparkSession.builder.master("local").appName("my-spark-app").getOrCreate() 
val df = spark.read.option("inferSchema", "true").option("header", "false").csv("D:\\ProcessDataSet\\anis_data\\Set _1Mud Pumps_Merged.csv") 
val aggregations = df.drop("DateTime").columns.map(c => stddev("c").as(c)) 
val df2 = df.agg(aggregations.head, aggregations.tail: _*) 
val columnsToKeep: Seq[String] = (df2.first match { 
    case r : Row => r.toSeq.toArray.map(_.asInstanceOf[Double]) 
}).zip(df.columns) 
    .filter(_._1 != 0) // your special condition is in the filter 
    .map(_._2) // keep just the name of the column 
// select columns with stddev != 0 
val finalResult = df.select(columnsToKeep.head, columnsToKeep.tail : _*) 
finalResult.write.option("header",true).csv("D:\\ProcessDataSet\\dataWithoutConstant\\Set _1Mud Pumps_MergedCleaned.csv") 

} 
+0

実際には、どのくらいの時間、それは、CSVファイルを書き込むことがかかりますか? あなたの入力データのサイズは? –

+0

@ L.CWIファイルは1.4ギガで、csv .itに書き込むのに5分かかりました。計算に要した時間と比較するのにかなり時間がかかっていましたが、何か提案がありましたか?ありがとう – user3637823

+0

@ L.CWI助けてくださいcsvファイルにデータフレームを保存する最速の方法 – user3637823

答えて

0

最適化の余地はあまりないと思います。あなたは正しいことをしています。

多分あなたが試みることができるのはcache()あなたのデータフレームdfです。

dfは、別々の2つのスパークアクションで使用されるため、2回読み込まれます。

試してみてください。

... 
val df = spark.read.option("inferSchema", "true").option("header", "false").csv("D:\\ProcessDataSet\\anis_data\\Set _1Mud Pumps_Merged.csv") 
df.cache() 
val aggregations = df.drop("DateTime").columns.map(c => stddev("c").as(c)) 
... 
関連する問題