如何在 Zeppelin 中使用 S3 的依赖项?
How to use dependencies from S3 in Zeppelin?
有没有办法将 S3 上存储桶中的 jar 添加为 Zeppelin 的依赖项?尝试了 z.load(s3n://...)
和 z.addRepo(some_name).url(s3n://...)
但他们似乎没有完成这项工作..
你可以从S3下载jar包,放到本地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>
有没有办法将 S3 上存储桶中的 jar 添加为 Zeppelin 的依赖项?尝试了 z.load(s3n://...)
和 z.addRepo(some_name).url(s3n://...)
但他们似乎没有完成这项工作..
你可以从S3下载jar包,放到本地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>