繁体   English   中英

通过http运行livy作业,而无需每次都上传jar

[英]Run livy job via http without uploading jar every time

我在玩Livy / Spark,对如何使用其中的一些东西有些困惑。 在livy examples文件夹中有一个示例,该示例显示建筑作业被上传到spark。 我喜欢正在使用的接口,但是我想通过http接口到livy / spark,因为我没有Java客户端。 这样看来,如果我使用livyclient上传jar,它仅存在于该spark会话中。 有没有一种方法可以将livyjobs上传到spark,然后在所有spark中都保持不变? 改而使这些工作/应用程序发光起来会更好吗?

老实说,我正在尝试找出最好的方法。 我希望能够通过Shell进行交互操作,但是我也想为那些我经常使用的火花中不可用的算法进行自定义作业。 我不确定应该采取什么方式解决这个问题。 有什么想法吗? 我应该如何使用Livy? 就像其他服务可以触发,然后处理在火花中构建自定义应用程序/方法一样吗?

例如:

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

谢谢

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

Livy- Cloudera

Livy- Apache

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

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

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

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

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

client.submit(job).get();

您可以使用开始会话

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM