【发布时间】:2021-04-15 16:20:43
【问题描述】:
我正在尝试使用 EMR 6.1.0 在 livy 会话中发布语句。但我无法导入我正在尝试执行的类(到我的自定义 jar)。
声明我正在尝试发布到一个 livy 会议 -
import com.path.to.Compactor
Compactor.compact(x, y, z)
Compactor 类存在于small-file-compactor-lib-1.0-SNAPSHOT-all.jar
这是我遇到的错误 -
<console>:23: error: object path is not a member of package com
import com.path.to.Compactor
当我尝试使用spark-shell --jars small-file-compactor-lib-1.0-SNAPSHOT-all.jar 时,上面的代码可以正常工作。
我在创建会话时尝试在 livy REST API 中的 jars 参数中传递这个 jar,并且应用程序日志还表明它被拾取并上传到 hdfs。
最初我将 jar 保存在 S3 中并在 api 中传递 s3 链接。然后,我尝试放入 hdfs,然后甚至尝试将 jar 放入 /usr/lib/livy/repl_2.12-jars/ 目录,以便它与其他 jar 一起上传。但这也没有解决import 的问题。
我查看了 spark 的工作目录,jar 存在。
我已经发布了这个println(sc.jars) 声明,我明白了
ArrayBuffer(file:/usr/lib/livy/rsc-jars/livy-api-0.7.0-incubating.jar, file:/usr/lib/livy/rsc-jars/livy-rsc-0.7.0-incubating.jar, file:/usr/lib/livy/rsc-jars/livy-thriftserver-session-0.7.0-incubating.jar, file:/usr/lib/livy/rsc-jars/netty-all-4.1.17.Final.jar, hdfs:///user/livy/small-file-compactor-lib-1.0-SNAPSHOT-all.jar, file:/usr/lib/livy/repl_2.12-jars/commons-codec-1.9.jar, file:/usr/lib/livy/repl_2.12-jars/livy-core_2.12-0.7.0-incubating.jar, file:/usr/lib/livy/repl_2.12-jars/livy-repl_2.12-0.7.0-incubating.jar, file:/usr/lib/livy/repl_2.12-jars/small-file-compactor-lib-1.0-SNAPSHOT-all.jar)
我的罐子在这里^
但是为什么 spark 不能导入类呢?
【问题讨论】:
-
我也面临同样的问题。
标签: apache-spark jar hadoop-yarn amazon-emr livy