如何在 Zeppelin 中使用来自 S3 的依赖项?

Posted

技术标签:

【中文标题】如何在 Zeppelin 中使用来自 S3 的依赖项?【英文标题】:How to use dependencies from S3 in Zeppelin? 【发布时间】:2016-08-14 15:37:37 【问题描述】:

有没有办法将 S3 上存储桶中的 jar 添加为 Zeppelin 的依赖项?尝试了z.load(s3n://...)z.addRepo(some_name).url(s3n://...),但他们似乎没有完成这项工作..

【问题讨论】:

【参考方案1】:

您可以从 S3 下载 jars 并将其放在本地 FS 上。它可以在 %dep 解释器中完成,如下所示:

%dep
import com.amazonaws.services.s3.AmazonS3Client
import java.io.File
import java.nio.file.Files, StandardCopyOption

val dest = "/tmp/dependency.jar"
val s3 = new AmazonS3Client()
val stream = s3.getObject("buckename", "path.jar").getObjectContent

Files.copy(stream, new File(dest).toPath, StandardCopyOption.REPLACE_EXISTING)

z.load(dest)

注意: 您必须生成 fat jar,即包含默认未提供的所有自定义依赖项(例如,当您的项目中有多个模块时)。在 maven 中可以使用 maven-shade-plugin 实现:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.4.2</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <artifactSet>
                    <includes>
                        <include>com.yourcompany:*</include>
                    </includes>
                </artifactSet>
            </configuration>
        </execution>
    </executions>
</plugin>

【讨论】:

非常感谢!有没有办法也可以回答这个问题?谢谢! ***.com/questions/37251236/… 我认为这不再有效。 “DepInterpreter(%dep) 已弃用。改为通过 GUI 解释器菜单加载依赖项。” 我按照说明将 jar 上传到本地文件系统,然后进入解释器菜单并添加具有相同路径的依赖项“/tmp/dependency.罐子” zeppelin 在 0.6.1 中也有一个奇怪的错误。为了获取新版本的 jar(即使您用更新覆盖了它),您必须进入解释器菜单,编辑依赖项字段并单击保存(这将重新启动解释器)。您不能只是重新启动解释器。

以上是关于如何在 Zeppelin 中使用来自 S3 的依赖项?的主要内容,如果未能解决你的问题,请参考以下文章

在 Zeppelin 中使用分类器指定依赖关系

是否可以通过 IAM 角色限制从 EMR (zeppelin) 访问 S3 数据?

Apache Zeppelin 如何可视化来自 Hbase 的数据?

Apache zeppelin 无法从 Amazon S3 笔记本 json 文件中获取 URL

Zeppelin:任何本地目录中都没有可用空间

如何在 Zeppelin 中切换 Spark 版本以使用 Spark 3.x