【问题标题】:Writing output as in the similar path of Input in Apache Spark像在 Apache Spark 中输入的类似路径一样写入输出
【发布时间】:2017-05-02 14:29:14
【问题描述】:

我在 parquet 文件中有数据,如下目录中

input/data/id1/files
input/data/id2/files
input/data/id3/files

如何以每个 id 作为文件夹名称读取这些数据?在阅读并进行一些处理之后,如何将输出存储在与输入路径相同的相似路径中。

/outout/data/id1/outputpaequet
/outout/data/id2/outputpaequet
/outout/data/id3/outputpaequet

【问题讨论】:

    标签: scala apache-spark spark-dataframe parquet


    【解决方案1】:

    所以在下面,状态就像在目录上执行 ls 一样。取回您的路径列表,遍历它们,将它们写在类似的路径中,用输出替换输入。

    val conf = new Configuration()
    val fs = FileSystem.get(conf)
    val status = fs.listStatus(new Path("/input/data/"))
    status.foreach(f => {
      val input = sqlContext.read.parquet(f.getPath.toString)
      val output: DataFrame = // do something
      output.write.parquet(f.getPath.toString.replace("input", "output"))
    })
    

    【讨论】:

    • 您可能想澄清您想在某些val output: DataFrame = // do something 上调用write 而不是在原始input DF 上。无论// do something 做什么,它实际上都不能改变input,所以现在的答案可能会令人困惑。
    • 是的,这是个好主意。我继续添加它。谢谢!
    • 感谢@DavidSchuler
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多