如何使用saveAsNewAPIHadoopFile将文件保存在同一目录中

时间:2019-06-21 14:44:58

标签: apache-spark spark-streaming avro hadoop2

我正在使用Spark Streaming,我想将每批Spark Streaming以Avro格式保存在本地。我已使用saveAsNewAPIHadoopFile将数据保存为Avro格式。这很好。但是它将覆盖现有文件。下一批数据将覆盖旧数据。有什么方法可以将Avro文件保存在公共目录中?我尝试通过添加Hadoop作业conf的一些属性来尝试在文件名中添加前缀。但无法使用任何属性。

dstream.foreachRDD {
  rdd.saveAsNewAPIHadoopFile(
      path,
      classOf[AvroKey[T]],
      classOf[NullWritable],
      classOf[AvroKeyOutputFormat[T]],
      job.getConfiguration()
    )
}

1 个答案:

答案 0 :(得分:0)

尝试一下-

您可以将过程分为2个步骤:

Step-01 :- Write Avro file using saveAsNewAPIHadoopFile to <temp-path>
Step-02 :- Move file from <temp-path> to <actual-target-path>

这肯定会解决您的问题。如果能一步一步完成此方案,我会分享自己的想法。

希望这会有所帮助。