gpt4 book ai didi

java - spark SAVEASTEXTfile需要很多时间-1.6.3

转载 作者:行者123 更新时间:2023-12-02 20:15:44 25 4
gpt4 key购买 nike

我从Mongo提取数据。处理数据,然后将数据存储在HDFS中。
1M记录的提取和处理完成时间不到1.1分钟。
提取码

JavaRDD<Document> rdd = MongoSpark.load(jsc);
处理代码
              JavaRDD<String> fullFile = rdd.map(new Function<Document, String>() {

public String call(Document s) {
// System.out.println(" About to Transform Json ----- " + s.toJson());
return JsonParsing.returnKeyJson(JsonParsing.returnFlattenMapJson(s.toJson()),args[3].split(","),extractionDetails);
}
});
System.out.println("Records Downloaded - " + fullFile.count());
完成时间少于1.1分钟。当我获取RDD的计数时。
之后,我有如下的保存命令,
  fullFile
.coalesce(1)
.saveAsTextFile(args[4], GzipCodec.class);
至少需要15到20分钟才能将其保存到HDFS中。
不知道为什么要花很多时间。
让我知道是否可以采取任何措施来加快这一过程。
我正在使用以下选项来运行它,
--num-executors 4 --executor内存4g --executor-cores 4
如果我增加执行程序或Memory的数量,仍然没有任何区别。
我已将“分区数”设置为70,不知道是否增加分区的性能?
任何减少保存时间的建议都会有所帮助。
提前致谢

最佳答案

fullFile
.coalesce(1)
.saveAsTextFile(args[4], GzipCodec.class);
在这里,您使用 coalesce(1)意味着要减少编号。分区到1的唯一原因就是这需要更多的时间。由于在编写时,它们只是一个分区,因此只有一个任务/执行程序会将整个数据写入所需的位置。如果要写入的速度快于合并时增加分区值的速度。
只需删除 coalesce或增加 coalesce中的值即可。你不能在Spark UI中写入数据时进行分区。

关于java - spark SAVEASTEXTfile需要很多时间-1.6.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64057012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com