1

我在玩 Livy/Spark,对如何使用其中一些有点困惑。在构建作业的 livy 示例文件夹中有一个示例,该示例将上传到 spark。我喜欢正在使用的接口,但我想通过 http 连接到 livy/spark,因为我没有 java 客户端。这样看来,如果我使用 livyclient 上传 jar,它似乎只存在于该 spark 会话中。有没有办法将 livyjobs 上传到 spark 中,然后在所有 spark 中持续存在?将这些工作/应用程序改为 spark 会更好吗?

老实说,我试图找出最好的方法是什么。我希望能够通过 shell 做交互式的事情,但我也想为我经常使用的 spark 中不可用的算法制作自定义作业。我不确定我应该用什么方法来解决这个问题。有什么想法吗?我应该如何使用 Livy?就像其他服务一样,在 spark 中构建自定义应用程序/方法?

例如:

假设我有一些 javascript 应用程序,并且我有一些可以加载的数据,并且我想在其上运行算法 x。算法 x 是否在 spark 中实现,但是通过按下该按钮,我想将该数据放入 spark 中,无论是放入 hdfs 还是从 elasticsearch 中提取或其他。如果我有 livy,我想在 livy 中调用一些 rest 命令来执行此操作,然后它会运行该特定算法。这样做的标准方法是什么?

谢谢

4

3 回答 3

2

Livy 还不支持文件上传。您必须为会话或批处理作业提供有效的文件路径。这些文件必须在 HDFS 中。因此,主要是您可以将脚本或文件保存在 HDFS 中,然后使用 Livy 启动引用这些文件的批处理/交互作业。

李维-Cloudera

李维 -阿帕奇

编辑: Livy 正在由 Apache 孵化,他们计划添加一个新的 API 来支持资源上传。检查这个

于 2018-05-17T11:04:06.727 回答
1

下面的 api 可用于在您的应用程序启动时上传 jar 一次。

LivyClient client = new LivyClientBuilder(false).setURI(uri).setAll(config).build();
client.addJar(new URI(UPLOAD_JAR_PATH)).get();

LivyClient 实例可以在应用程序范围内。UPLOAD_JAR_PATH : jar 所在的 HDFS 路径,Livy Server 可以访问该路径

然后使用同一个 LivyClient 实例提交多个作业。

client.submit(job).get();
于 2018-07-22T09:09:56.893 回答
0

您可以使用启动会话

spark.jars = "hdfs:///some/hdfs/location/file.jar"

因此,您可以在任何会话中添加尽可能多的样板代码。

于 2019-02-15T09:37:27.973 回答