0
業務案例是我們希望將一個大的拼花地板文件分割成一列作爲分區。我們已經測試了使用dataframe.partition(「xxx」)。write(...)。大約花費了1小時,有100K條記錄。因此,我們將使用map reduce在不同的文件夾中生成不同的parquet文件。示例代碼:火花是否支持拼接格式的多個輸出文件
import org.apache.hadoop.io.NullWritable
import org.apache.spark._
import org.apache.spark.SparkContext._
import org.apache.hadoop.mapred.lib.MultipleTextOutputFormat
class RDDMultipleTextOutputFormat extends MultipleTextOutputFormat[Any, Any] {
override def generateFileNameForKeyValue(key: Any, value: Any, name: String): String =
key.asInstanceOf[String]+"/aa"
}
object Split {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("SplitTest")
val sc = new SparkContext(conf)
sc.parallelize(List(("w", "www"), ("b", "blog"), ("c", "com"), ("w", "bt")))
.map(value => (value._1, value._2 + "Test"))
.partitionBy(new HashPartitioner(3))//.saveAsNewAPIHadoopFile(path, keyClass, valueClass, outputFormatClass, conf)
.saveAsHadoopFile(args(0), classOf[String], classOf[String],
classOf[RDDMultipleTextOutputFormat])
sc.stop()
}
}
上面的示例只是生成一個文本文件,如何生成具有multipleoutputformat的鑲木地板文件?