apache-spark - Apache Livy - 休息 API
问题描述
我的要求:从 web 应用程序中触发 Yarn 中的 Spark 作业并将结果显示在网页中。spark 作业接受少量参数并计算一个 DataSet,其中包含需要返回给 Web 应用程序的值。
在网上浏览了一些之后,我认为 Livy 可以用于此。
Livy 已经安装了 HDP 2.5。所以我使用 POST/Sessions 创建了新的 Livy 会话,并包含了我的 jar 文件。
{"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 和我的主类。但是这样做我不会在我的 Web 应用程序中得到我的结果。
我的 jar 文件中的 Java 代码:
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 上运行以下代码作为 POST - sessions/20/statements '''
{
"code": "import LivySample;LivySample lv = new LivySample();lv.executeSampleLivy(sc, \"abc\")"
}
调用 GET session/21/statements/0 时出现错误:
{
"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": [],
}
}
我无法调试此错误。请让我知道我在这里做错了什么。
我可以像我在这里指定的那样在 LivyRest API 中使用 Java。
谢谢!
解决方案
我更熟悉批处理 API,但我相信在会话 API 中,您的应用程序 JAR 应该在files
请求字段中提供,而不是jars
(自相矛盾地)。
无论如何,Livy 会话基本上是一个交互式 spark-shell 会话。因此,如果您想使用会话,您将逐行执行程序(RunStatement
为每一行向端点提交请求)。然后在最后你会向GetSessionStatement(s)
端点询问结果。
或者(也许更容易),您可以使用批处理 API,只需将输出写入某个持久位置,并让您的 Web 应用程序在批处理达到“成功”状态时公开它。
推荐阅读
- bash - 向标准 shell 命令添加标志
- excel - 寻求帮助以了解不同的代码功能
- python - Python 套接字模块错误:WinError 10057
- python - 如何获得与 0 和 1 分类不同的结果,keras
- awk - sed 或 awk:从选定的多行替换 \n
- android - 约束布局使应用程序太慢
- python - 不可排序的类型:NoneType() < NoneType()
- javascript - React Js-看不到html标签内的prop值作为键
- vba - “else without if”在 excel vba 中出现此错误
- javascript - 使用 React 在同一个 Signed Url 上用新图像刷新图像