【问题标题】:How to save Spark RDD to local filesystem如何将 Spark RDD 保存到本地文件系统
【发布时间】:2017-03-06 16:44:30
【问题描述】:

我可以使用saveAsTextFile 语法将文件保存到本地系统吗? 这就是我编写用于保存文件的语法的方式:insert_df.rdd.saveAsTextFile("<local path>")

当我尝试这样做时,由于没有权限而出现错误,但我拥有该特定本地路径的所有权限,看起来它将文件视为 HDFS 文件。

【问题讨论】:

    标签: scala hadoop apache-spark dataframe hive


    【解决方案1】:

    我认为您应该尝试"file:///local path" 而不是"/local path"

    【讨论】:

    • 我在集群上运行这个,我需要提到任何主机名吗??或者只是“文件:///路径”就足够了??
    • 我的意思是路径前的主机名
    • 当我想将 RDD 的内容保存到集群上的文本文件时,我不使用 saveAsTextFile。也许你必须使用collect(),但这在一个巨大的RDD上不是一个好主意。如果它有效,您将获得与 RDD 的分区数相同数量的文本文件。我在 Java 中使用的是以下内容:rdd.toLocalIterator().forEachRemaining(x -> bw.write(x.toString()) 其中 bw 是 BufferedWriter。
    • 类似于this
    【解决方案2】:

    以下代码可以正常工作:

      val outputFilePath = "file:////home/opsdev/SDG/output/"
    
      DF.repartition(1)
        .write.mode(SaveMode.Append)
        .option("sep", "|")
        .option("header", "true")
        .option("escape", "\"")
        .option("quoteAll", "true")
        .csv(outputFilePath)
    

    别忘了在本地模式下运行。

    【讨论】:

      猜你喜欢
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 2017-08-07
      • 1970-01-01
      • 2021-04-25
      相关资源
      最近更新 更多