【问题标题】:I want to split one file into several in HDFS我想在 HDFS 中将一个文件拆分为多个
【发布时间】:2019-10-23 14:24:23
【问题描述】:

我正在尝试使用 spark-submit 将文件写入 hdfs。 写入文件时,我想将一个文件拆分为多个,例如 mapreduce 的结果而不是一个。(例如 part-0000,park-0001)

这里是示例代码 我应该设置哪些选项

val conf = new Configuration()
val fs= FileSystem.get(conf)
val output = fs.create(new Path("/user/foo/test.txt"))
val writer = new PrintWriter(output)
writer.write("Hellow World1\n")
writer.write("Hellow World2\n")
...
writer.write("Hellow World3\n")

【问题讨论】:

    标签: scala hdfs spark-submit


    【解决方案1】:

    您可以使用repartitioncoalesce 控制spark 中输出文件的数量。 在 mapreduce 中,您可以通过 reducer 的数量来控制输出文件,在 spark 中您可以指定分区和合并

    dataRDD.repartition(2).saveAsTextFile("/user/cloudera/sqoop_import/orders_test")
    

    如上所示命令将数据保存在两个文件中,因为我们已将分区规格指定为 2

    你可以看看这个answer它会帮助你理解

    【讨论】:

    • 数据不在数据框中。我只想收集输出日志并将其保存到文件中。
    • 您能否更具体地提出您要实现的问题,如果您不进行任何处理,那么为什么要使用 spark,您可以直接使用简单的任何程序使用 FileSystem API 并放置文件。为什么需要使用 spark
    • 我想从dbms中的表中加载数据(select * from),经过简单的数据处理后保存到hdfs中的文件中。
    • 你是对的。没有理由使用火花。有没有办法使用 FileSystem API 将单个文件保存到多个文件中?
    • 我可以在互联网上找到这个希望它可以解决你的目的hadoop.apache.org/docs/r2.6.3/api/org/apache/hadoop/mapreduce/…也阅读这个javadeveloperzone.com/hadoop/hadoop-multiple-outputs-example
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多