在Spark Scala中保存和覆盖文件

在Spark Scala中保存和覆盖文件,scala,apache-spark,Scala,Apache Spark,我有一个文本文件,其中第一列用表名表示,第二列用日期表示。两列之间的分隔符由空格表示。数据如下所示 employee.txt organization 4-15-2018 employee 5-15-2018 我的要求是读取文件并根据业务逻辑更新日期列,然后保存/覆盖文件。下面是我的代码 object Employee { def main(args: Array[String]) { val conf = new SparkConf().setMaster("local").s

我有一个文本文件,其中第一列用表名表示,第二列用日期表示。两列之间的分隔符由空格表示。数据如下所示

employee.txt

organization 4-15-2018
employee 5-15-2018
我的要求是读取文件并根据业务逻辑更新日期列,然后保存/覆盖文件。下面是我的代码

object Employee {
  def main(args: Array[String]) {

    val conf = new SparkConf().setMaster("local").setAppName("employeedata")
    val sc = new SparkContext(conf)
    var input = sc.textFile("D:\\employee\\employee.txt")
      .map(line => line.split(' '))
      .map(kvPair => (kvPair(0), kvPair(1)))
      .collectAsMap()

    //Do some operations

    // Do iteration and update the hashmap as follows
    val finalMap = input + (tableName -> updatedDate)

    sc.stop()
  }
在上述场景中,如何保存/覆盖(如果存在)最终映射

我的要求是读取文件并根据业务逻辑更新日期列,然后保存/覆盖文件

永远不要直接做这样的事。始终:

  • 首先将数据写入临时存储器
  • 使用标准文件系统工具删除原始文件
  • 使用标准文件系统工具重命名临时输出
直接覆盖数据的尝试极有可能导致部分或全部数据丢失