我想在HDFS中将一个文件拆分为多个文件

时间:2019-10-23 05:58:35

标签: scala hdfs spark-submit

我正在尝试使用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")

1 个答案:

答案 0 :(得分:0)

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

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

如上面的命令所示,由于我们将分区规范指定为2,因此会将数据保存在两个文件中

您可以看看此answer,它将帮助您理解