在Spark Scala中保存和覆盖文件

时间:2018-04-15 13:05:10

标签: 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").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()
  }

如何在上面的场景中保存/覆盖(如果存在)finalMap?

1 个答案:

答案 0 :(得分:1)

  

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

永远不要直接做这样的事情。总是:

  • 首先将数据写入临时存储。
  • 使用标准文件系统工具删除原始文件。
  • 使用标准文件系统工具重命名临时输出。

尝试直接覆盖数据很可能会导致部分或完全数据丢失。