在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 提前谢谢!
答案 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")
}