Java spark SAVEASTEXTfile需要花费大量时间-1.6.3
我从Mongo中提取数据。处理数据,然后将数据存储在HDFS中 1M记录的提取和处理完成时间不到1.1分钟 提取代码Java spark SAVEASTEXTfile需要花费大量时间-1.6.3,java,apache-spark,hadoop,rdd,Java,Apache Spark,Hadoop,Rdd,我从Mongo中提取数据。处理数据,然后将数据存储在HDFS中 1M记录的提取和处理完成时间不到1.1分钟 提取代码 JavaRDD<Document> rdd = MongoSpark.load(jsc); 这至少需要15到20分钟才能将其保存到HDFS中 不知道为什么要花很多时间。 如果可以做些什么来加快流程,请告诉我 我正在使用以下选项运行它, --num executors 4--执行器内存4g--执行器内核4 如果我增加执行者或内存的#,仍然没有任何区别。 我已将分区的#
JavaRDD<Document> rdd = MongoSpark.load(jsc);
这至少需要15到20分钟才能将其保存到HDFS中
不知道为什么要花很多时间。
如果可以做些什么来加快流程,请告诉我
我正在使用以下选项运行它,
--num executors 4--执行器内存4g--执行器内核4
如果我增加执行者或内存的#,仍然没有任何区别。
我已将分区的#设置为70,不确定是否增加了该值,是否会提高性能
任何缩短储蓄时间的建议都是有益的
提前谢谢
fullFile
.coalesce(1)
.saveAsTextFile(args[4], GzipCodec.class);
在这里,您使用的是coalesce(1)
意味着您只需要将分区数减少到1,这就是为什么它需要更多的时间。由于它们在写入时只有一个分区,因此只有一个任务/执行器将在所需位置写入整个数据。如果希望写入速度快于增加coalesce中的分区值。
只需删除
合并
或增加合并
中的值即可。在spark UI中写入数据时不能使用分区。可以禁用洗牌触发合并吗?另外,你认为你可以选择一个不同的编解码器会有所帮助吗?@raja777m-我应该如何禁用Shuffle Fire?我将搜索其他可用的编解码器。@raja777m:Spark 1.6.3不允许在Coalesche-Akshansh中洗牌为false-我有另一个模块,我采用相同的方法,大约有1m条记录,但保存记录的速度比这个快得多。不确定性能差异的原因是什么。嗨,阿肯什,我还有一组数据,存储时间不到一分钟。。但是我不知道为什么这比这个快很多。。两者之间的列数几乎相同。Hi@SamBerchmans,您能比较一下从spark UI和DAG写入数据时创建的分区吗。
fullFile
.coalesce(1)
.saveAsTextFile(args[4], GzipCodec.class);
fullFile
.coalesce(1)
.saveAsTextFile(args[4], GzipCodec.class);