首页 > 解决方案 > 如何使用 saveAsNewAPIHadoopFile spark scala 将文件保存在同一目录中

问题描述

我正在使用火花流,我想以 Avro 格式将每批火花流保存在我的本地。我曾经saveAsNewAPIHadoopFile以 Avro 格式保存数据。这很好用。但它会覆盖现有文件。下一批数据将覆盖旧数据。有没有办法将 Avro 文件保存在公共目录中?我尝试通过添加 Hadoop 作业 conf 的一些属性来在文件名中添加前缀。但不工作任何属性。

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

标签: apache-sparkspark-streamingavrohadoop2

解决方案


尝试这个 -

您可以将您的流程分为两个步骤:

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

这肯定会暂时解决您的问题。如果我能一步完成这个场景,而不是两步,我会分享我的想法。

希望这会有所帮助。


推荐阅读