zoukankan      html  css  js  c++  java
  • 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("	")(0) + ".txt"
      }
    }
    

      

    结果

  • 相关阅读:
    一个可以用的句子
    QQ通讯协议分析
    do easy get
    WCF 实例模式和对象生命周期
    c# FTP操作类
    [OAuth] 翻译 前4章
    [OAuth] 翻译 第5章
    HttpRequest 生命周期
    [ WebGL系列 ] 1 什么webgl
    SQL Server 问题集 不断更新
  • 原文地址:https://www.cnblogs.com/Alcesttt/p/11402192.html
Copyright © 2011-2022 走看看