sparkを使用して非常に大きなデータセットを処理しています。データはavroファイルとして保存されます。データはディレクトリ構造(/ input/yyyy/MM/dd/HH /)にも編成されています。たとえば、今日のavroファイルは、/ input/2016/03/18/00〜/ input/2016/03/18/23にあります。空のavroファイルを100個作成するスパーク
ここ2年間のデータを処理すると、多くのavroファイルが処理されます。私は色相を使用して、出力の内部で行くとき今
val inputRDD = sc.load("/input", "com.databricks.spark.avro").rdd
val outputRDD = inputRDD.map(foo).filter(_.isDefined).flatMap(x => x).join(anotherRDD).map {
case (a, (b, (c, d))) => (a, (b, c, d))
}.join(yetAnotherRDD).filter {
case (a, ((b, c, d), (e, f))) => Math.abs(a - b) <= 2000
}.map {
case (a, ((b, c, d), (e, f))) => Row(a, d)
}
val outputDF = sc.createDataframe(outputRDD, outputSchema)
outputDF.save(s"/output/${datePath(date)}", "com.databricks.spark.avro")
を次のように
データ処理コードがあります。私は181ページを見て、各ページに私は多くの空のavroファイルを見る。
すべてのファイルが空であるわけではありませんが、空のファイルが非常に多いです。
空のファイルが必要ない場合はどうすればいいですか?
私はチェックしましたが、スパーク1.3.0にはコアーレス機能がありません。私は彼らが後でそれをデータフレームに追加したと思います。 –
この場合、 '.repartition(200)'を使うことができます。 Sparkの後のバージョンでは '.coalesce(200)'がより良く機能することに注意してください。 –