我正在运行一个 Spark 作业,就逻辑而言,它的性能非常好。但是,当我使用 saveAsTextFile 将文件保存在 s3 存储桶中时,输出文件的名称格式为 part-00000、part-00001 等。有没有办法更改输出文件名?
谢谢。
在 Spark 中,您可以使用saveAsNewAPIHadoop文件并设置mapreduce.output.basenamehadoop 配置中的参数用于更改前缀(仅“部分”前缀)
val hadoopConf = new Configuration()
hadoopConf.set("mapreduce.output.basename", "yourPrefix")
yourRDD.map(str => (null, str))
.saveAsNewAPIHadoopFile(s"$outputPath/$dirName", classOf[NullWritable], classOf[String],
classOf[TextOutputFormat[NullWritable, String]], hadoopConf)
您的文件将被命名为:yourPrefix-r-00001
在hadoop和Spark中,输出中可以有多个文件,因为可以有多个reducer(hadoop)或多个分区(spark)。然后,您需要保证每个文件的名称都是唯一的,这就是为什么无法覆盖文件名最后部分的序列号的原因。
但如果你想更好地控制你的文件名,你可以扩展文本输出格式 or 文件输出格式并覆盖获取唯一文件 method.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)