我在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作业已经在我的机器上运行了一个多小时,我想知道它是否已经卡在任何地方或正在经历一个无限循环,或类似的东西。
答案 0 :(得分:1)
这是一个有点问题。但总的来说不应该花很长时间。我的猜测是出了问题。根据个人经验,我猜你没有足够的执行者可用。
内存得到了很多关注,但是可用执行程序的数量让我比内存问题更适合。特别是因为你会看到这样的行为,它不会出错。它将无限期地停止。
那就是说,这只是对工作和环境知之甚少的猜测。是时候调试你的部分,看看你是否能找到问题或者回答一个更具体的问题/问题。