Scala内核Jupyter notebook的Snowpark环境导入命令报错如何解决
Snowpark Scala内核Jupyter Notebook两类报错解决方案
报错1:执行import org.pmml4s.model.Model提示「object pmml4s is not a member of package org」
报错原因
Scala内核运行环境的类路径中未引入pmml4s相关依赖,编译时无法定位到对应包。
解决步骤
- 先确认你使用的Snowpark版本、Scala版本和pmml4s版本互相兼容,匹配对应稳定版即可
- 如果你使用的是Almond(Scala Jupyter主流内核),在导入语句前执行依赖引入命令:
import $ivy.org.pmml4s::pmml4s:0.9.16``,将版本号替换为和你环境匹配的版本 - 如果是Snowpark专属依赖管理场景,可使用Snowpark提供的
add_package方法引入pmml4s的jar包,或提前将对应jar包上传至Snowpark会话的依赖路径,重启内核后再执行导入语句即可
报错2:编写package algorithms提示「expected end-of-input」
报错原因
Jupyter的Scala内核为交互式运行环境,默认不支持在单元格顶层直接声明package,package声明仅允许放在.scala源码文件的顶层,交互式单元格的代码默认在匿名上下文中运行,顶层写package会触发语法校验错误。
解决步骤
- 若仅需要做代码命名空间隔离,使用object包裹代码替代package即可,示例如下:
object algorithms { // 类、方法、变量均定义在object内部 class SampleAlgo { // 类实现逻辑 } def run(params: Map[String, Any]) = { // 方法实现逻辑 } } // 调用方式:algorithms.run(Map(...)) 、val algo = new algorithms.SampleAlgo()
- 若必须使用package结构,将包含package声明的代码写入独立的.scala源文件中,再在Jupyter单元格中通过
import $file.你的源文件名引入整个文件内容即可
内容的提问来源于stack exchange,提问作者priya sengar
相关产品推荐
相关产品推荐

