Har*_*hit 12 scala amazon-s3 apache-spark
使用scala运行spark工作,正如预期的那样,所有工作都按时完成,但不知何故,一些INFO日志在作业停止前打印20-25分钟.
发布少量UI截图,可以帮助解决问题.
我不明白为什么两个工作ID之间花了这么多时间.
以下是我的代码段:
val sc = new SparkContext(conf)
for (x <- 0 to 10) {
val zz = getFilesList(lin);
val links = zz._1
val path = zz._2
lin = zz._3
val z = sc.textFile(links.mkString(",")).map(t => t.split('\t')).filter(t => t(4) == "xx" && t(6) == "x").map(t => titan2(t)).filter(t => t.length > 35).map(t => ((t(34)), (t(35), t(5), t(32), t(33))))
val way_nodes = sc.textFile(way_source).map(t => t.split(";")).map(t => (t(0), t(1)));
val t = z.join(way_nodes).map(t => (t._2._1._2, Array(Array(t._2._1._2, t._2._1._3, t._2._1._4, t._2._1._1, t._2._2)))).reduceByKey((t, y) => t ++ y).map(t => process(t)).flatMap(t => t).combineByKey(createTimeCombiner, timeCombiner, timeMerger).map(averagingFunction).map(t => t._1 + "," + t._2)
t.saveAsTextFile(path)
}
sc.stop()
Run Code Online (Sandbox Code Playgroud)
Gle*_*olt 18
当我发表评论时,我建议使用spark-csv软件包而不是sc.saveAsTextFile使用该软件包直接写入s3没有问题:)
我不知道你是否使用s3或s3n,但可能尝试切换.我在Spark 1.5.2(EMR-4.2)上使用s3a遇到了问题,其中写入一直超时并且切换回s3解决了问题,因此值得一试.
应该加速写入s3的其他一些事情是使用DirectOutputCommiter
conf.set("spark.hadoop.mapred.output.committer.class","com.appsflyer.spark.DirectOutputCommitter")
Run Code Online (Sandbox Code Playgroud)
并禁用_SUCCESS文件的生成:
sc.hadoopConfiguration.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")
Run Code Online (Sandbox Code Playgroud)
请注意,必须在hadoop配置上设置禁用_SUCCESS文件,SparkContext而不是在SparkConf.
我希望这有帮助.
| 归档时间: |
|
| 查看次数: |
3174 次 |
| 最近记录: |