Scala代码未执行

时间:2013-10-31 01:26:17

标签: scala apache-spark

我正在尝试在Spark上执行以下scala代码,但是由于某种原因,函数选择性没有被调用

var lines = sc.textFile(inputPath+fileName,1)
val lines2 =lines.map(l=>selective(
func,List(2,3),List(1,26),l,";",0           
))
lines2.toArray().foreach(l=>out.write(l))
.......

选择性功能定义如下

def selective(f: (String,Boolean) => String , phoneFields: Seq[Int], codeFields: Seq[Int], in: String, delimiter:String, iMode:Int /* 0 for enc, 1 for dec */) :String =
        in.split(delimiter,-1).zipWithIndex
    .map { 

      case (str, ix) 
    if( phoneFields.contains(ix)||codeFields.contains(ix)) => 
        var output=f(str,codeFields.contains(ix))
        var sTemp=str+":"+output+"\n"
        if((iMode==0)&&codeFields.contains(ix)&&(str.compareTo("")!=0)  )
            CodeDictString+=sTemp
        else if(str.compareTo("")!=0)
            PhoneDictString+=sTemp

        output
      case other => other._1
    }.mkString(";").+("\n")

println语句未执行。此外,该功能不会返回任何东西。 sc是火花上下文对象

2 个答案:

答案 0 :(得分:3)

您是在local模式下运行还是在群集上运行?传递给lines.map的函数由Spark工作人员评估,因此如果您在群集上运行,println将出现在worker的stdout日志中(这些日志可通过Spark的Web UI查看)。

答案 1 :(得分:1)

此函数无法编译。语法

{
  some statement
  case ... => ...

无效。案例陈述如下所示:

{
   case ... => ...
       ...
   case ... => ...
       ...
}

由于您显然需要某些进行编译,我打赌在println之前有一个案例陈述,并且没有选择该案例陈述。