spark 实现多文件输出
需求
不同的key输出到不同的文件
txt文件
multiple.txt
中国;22 美国;4342 中国;123 日本;44 日本;6 美国;55 美国;43765 日本;786 日本;55
scala代码
import org.apache.hadoop.mapred.lib.MultipleTextOutputFormat
import org.apache.spark.{SparkConf, SparkContext}
object Mutiple {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("phone-count").setMaster("local[*]")
val sc = new SparkContext(conf)
val input = "C://multiple.txt"
val fileRDD = sc.textFile(input)
val kvRDD = fileRDD.map(line => (line.split(";")(0), line.split(";")(1)))
kvRDD.saveAsHadoopFile("C://out", classOf[String], classOf[String], classOf[RDDMultipleTextOutputFormat])
}
}
class RDDMultipleTextOutputFormat extends MultipleTextOutputFormat[Any, Any]{
override def generateFileNameForKeyValue(key: Any, value: Any, name: String): String = {
//定义输出的文件名
key.asInstanceOf[String].split("\t")(0) + ".txt"
}
}
结果


浙公网安备 33010602011771号