Scala Spark作业在文件中处理一百万行需要多长时间?

时间:2017-11-07 19:41:06

标签: scala hadoop apache-spark hdfs

我在HDFS中有一个名为file1的文件,其中包含多个文件的路径:

this/is/path1
this/is/path2
this/is/path3
.
.
.
this/is/path1000000

如果我通过在Scala中执行以下行来获取此文件中的所有行作为列表,

val lines=Source.fromFile("/my/path/file1.txt").getLines.toList

如果我按如下方式使用'for'循环,则在一个单独的函数中处理file1的每一行,该函数涉及每行的一些映射功能,

for(i<-lines){
val firstLines=sc.hadoopFile(i,classOf[TextInputFormat],classOf[LongWritable],classOf[Text]).flatMap {
case (k, v) => if (k.get == 0) Seq(v.toString) else Seq.empty[String]
}
}

这需要运行多长时间,因为file1包含大约一百多万行?这个scala作业已经在我的机器上运行了一个多小时,我想知道它是否已经卡在任何地方或正在经历一个无限循环,或类似的东西。

1 个答案:

答案 0 :(得分:1)

这是一个有点问题。但总的来说不应该花很长时间。我的猜测是出了问题。根据个人经验,我猜你没有足够的执行者可用。

内存得到了很多关注,但是可用执行程序的数量让我比内存问题更适合。特别是因为你会看到这样的行为,它不会出错。它将无限期地停止。

那就是说,这只是对工作和环境知之甚少的猜测。是时候调试你的部分,看看你是否能找到问题或者回答一个更具体的问题/问题。