【问题标题】:Writing to a file in Apache Spark在 Apache Spark 中写入文件
【发布时间】:2016-08-26 18:56:42
【问题描述】:

我正在编写一个 Scala 代码,该代码需要我写入 HDFS 中的文件。 当我在本地使用Filewriter.write 时,它可以工作。同样的事情在 HDFS 上不起作用。 经过检查,我发现在 Apache Spark 中可以编写以下选项- RDD.saveAsTextFile 和 DataFrame.write.format。

我的问题是:如果我只想将 int 或字符串写入 Apache Spark 中的文件怎么办?

跟进: 我需要向输出文件写入标题、DataFrame 内容,然后附加一些字符串。 sc.parallelize(Seq(<String>)) 有帮助吗?

【问题讨论】:

    标签: scala hadoop apache-spark filewriter


    【解决方案1】:

    使用Seq 使用您的数据(整数/字符串)创建RDD:有关详细信息,请参阅parallelized-collections:

    sc.parallelize(Seq(5))  //for writing int (5)
    sc.parallelize(Seq("Test String")) // for writing string
    

    val conf = new SparkConf().setAppName("Writing Int to File").setMaster("local")
    val sc = new SparkContext(conf) 
    val intRdd= sc.parallelize(Seq(5))   
    intRdd.saveAsTextFile("out\\int\\test")
    

    val conf = new SparkConf().setAppName("Writing string to File").setMaster("local")
    val sc = new SparkContext(conf)   
    val stringRdd = sc.parallelize(Seq("Test String"))
    stringRdd.saveAsTextFile("out\\string\\test")
    

    【讨论】:

    • 谢谢。那确实奏效了。如果您能提供帮助,我正在编辑我的问题并进行后续跟进。
    • 接受答案后,最好发布新问题。
    【解决方案2】:

    跟进示例:(测试如下)

    val conf = new SparkConf().setAppName("Total Countries having Icon").setMaster("local")
    val sc = new SparkContext(conf)
    
    val headerRDD= sc.parallelize(Seq("HEADER"))
    
    //Replace BODY part with your DF
    val bodyRDD= sc.parallelize(Seq("BODY"))
    
    val footerRDD = sc.parallelize(Seq("FOOTER"))
    
    //combine all rdds to final    
    val finalRDD = headerRDD ++ bodyRDD ++ footerRDD 
    
    //finalRDD.foreach(line => println(line))
    
    //output to one file
    finalRDD.coalesce(1, true).saveAsTextFile("test") 
    

    输出:

    HEADER
    BODY
    FOOTER
    

    more examples here. . .

    【讨论】:

      猜你喜欢
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 2014-07-18
      • 2014-01-03
      • 1970-01-01
      相关资源
      最近更新 更多