使用

时间:2018-04-20 07:52:55

标签: apache-zeppelin

在zeppelin上使用spark时出现了一个奇怪的错误。我使用它们时找不到导入的类。代码示例是:

%spark
import java.io.Serializable
import java.text.{ParseException, SimpleDateFormat}
import java.util.{Calendar, SimpleTimeZone}

class Pos(val pos: String) extends Serializable {

if (pos.length != 12) {
  throw new IllegalArgumentException(s"[${pos}] seems not a valid pos 
 string")
}

private val cstFormat = new SimpleDateFormat("yyyyMMddHHmm")
private val utcFormat = new SimpleDateFormat("yyyyMMddHHmm")
}

我收到以下错误:

import java.io.Serializable
import java.text.{ParseException, SimpleDateFormat}
import java.util.{Calendar, SimpleTimeZone}
<console>:17: error: not found: type SimpleDateFormat
     private val cstFormat = new SimpleDateFormat("yyyyMMddHHmm")
                                 ^
<console>:18: error: not found: type SimpleDateFormat
     private val utcFormat = new SimpleDateFormat("yyyyMMddHHmm")
                                 ^
<console>:25: error: not found: type ParseException
       case e: ParseException => throw newIllegalArgumentException(s"
               ^

有没有解决错误的方法? 齐柏林飞艇版本为0.7.3,火花版本为2.1 提前谢谢!

2 个答案:

答案 0 :(得分:0)

似乎您必须在类定义中编写导入:

%spark
class Pos(val pos: String) extends Serializable {

    import java.io.Serializable
    import java.text.{ParseException, SimpleDateFormat}
    import java.util.{Calendar, SimpleTimeZone}

    if (pos.length != 12) {
      throw new IllegalArgumentException(s"[${pos}] seems not a valid pos string")
    }

    private val cstFormat = new SimpleDateFormat("yyyyMMddHHmm")
    private val utcFormat = new SimpleDateFormat("yyyyMMddHHmm")
}

如果您需要导入类构造函数的参数,则可以在一个对象中创建您的类,然后在以下段落中调用YourObject.YourClass(args)。另请参见this question

答案 1 :(得分:0)

在Zeppelin中,您必须将所有内容都导入到同一行中,并以;分隔。使它起作用:

import java.io.Serializable; import java.text.{ParseException, SimpleDateFormat}; import java.util.{Calendar, SimpleTimeZone}; class Pos(val pos: String) extends Serializable {

if (pos.length != 12) {
  throw new IllegalArgumentException(s"[${pos}] seems not a valid pos 
 string")
}

private val cstFormat = new SimpleDateFormat("yyyyMMddHHmm")
private val utcFormat = new SimpleDateFormat("yyyyMMddHHmm")
}