首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache Livy - Rest API

Apache Livy - Rest API
EN

Stack Overflow用户
提问于 2020-03-30 10:29:08
回答 1查看 931关注 0票数 0

我的要求:从web应用程序触发Yarn中的Spark作业,并在网页中显示结果。spark作业接受的参数很少,并使用需要返回给web应用程序的值计算DataSet。

在网上浏览之后,我认为Livy可以用来做这件事。

Livy已经安装了HDP 2.5。因此,我使用POST/Sessions创建了新的Livy会话,并包含了我的jar文件。

代码语言:javascript
运行
复制
{"kind":"spark","name":"livy","jars":["/xyz.jar"],"proxyUser":"livy"}

(我必须包含标题‘x-requested by’,因为启用了csrfPrevention。)注意:- jar必须放在HDFS中才能正常工作

根据Livy的示例:- https://livy.apache.org/examples/我可以将代码片段作为"data = {' code ':'1 + 1'}“传递。我不知道如何在类中调用该方法。根据Livy Rest API文档,我没有'className‘选项- https://livy.apache.org/docs/latest/rest-api.html

如果我使用POST/Batch来创建会话,我可以指定一个jar和我的主class.But这样做,我将不会在我的web应用程序中得到结果。

jar文件中的Java代码:

代码语言:javascript
运行
复制
public class LivySample {


    public String executeSampleLivy(SparkContext sc,String input){
        JavaSparkContext jsc = new JavaSparkContext(sc);
        List<String> listNames = Arrays.asList("abc","def","ghi");
        JavaRDD<String> rdd =  jsc.parallelize(listNames);
        return rdd.filter(l->l.contains(input)).collect().get(0);
    }

}

我尝试在Livy url -session/20/statements‘’上以POST的形式运行以下代码

代码语言:javascript
运行
复制
{
  "code": "import LivySample;LivySample lv = new LivySample();lv.executeSampleLivy(sc, \"abc\")"
}

调用GET sessions/21/statements/0时出现错误:

代码语言:javascript
运行
复制
  {
"id": 2,
"state": "available",
"output": {
"status": "error",
"execution_count": 2,
"ename": "Error",
"evalue": "<console>:1: error: '.' expected but ';' found. import LivySample;LivySample lv = new LivySample();lv.executeSampleLivy(sc, "chris"); ^",
"traceback": [],
}
}

我无法调试这个error.Can,请让我知道我在这里做错了什么。

我可以像我在这里指定的那样在LivyRest应用程序接口中使用Java吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-04-02 02:53:45

我更熟悉batches API,但我相信在session API中,您的应用程序JAR应该在请求的files字段中提供,而不是jars (矛盾的)。

无论如何,Livy会话基本上是一个交互式的spark-shell会话。因此,如果希望使用会话,则需要逐行执行程序(为每一行向RunStatement端点提交一个请求)。最后,您将向GetSessionStatement(s)端点询问结果。

或者(也许更容易),您可以使用批处理API,只需将输出写入某个持久位置,并在批处理达到“成功”状态时让您的web应用程序公开它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60923218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档