Java 创建与读取Livy Session以及结果

2023-10-13 15:18
文章标签 java 读取 创建 session livy

本文主要是介绍Java 创建与读取Livy Session以及结果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

直接上代码

package net.aas.penrose.deploy.utils;import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;import java.util.Map;public  class LivyServerUtil {private static final String HOST = "http://120.132.101.202";private static final String PORT = "8998";private static final String SESSIONS = "sessions";private static final String STATEMENTS = "statements";private static RestTemplate client = new RestTemplate();private static HttpHeaders headers = new HttpHeaders();private static final String ERROR_GETRESULT = "读取结果时出错";private static final String ERROR_CREATE_SESSION = "创建session时出错";private static final String ERROR_CODE = "返回code不是201 or 201";/*** 向目的URL发送post请求* @param host       SPARK_HOME:port* @param code    excute Code* @return  AdToutiaoJsonTokenData*/public static String sendPost(String host,String port, String code){headers.setContentType(MediaType.APPLICATION_JSON);String sessionId = getSession(host,port);String finalURL = host +":" + port + "/" + SESSIONS +"/" + sessionId +"/"+STATEMENTS;HttpEntity<String> entity = new HttpEntity<>(code,headers);ResponseEntity<Map> response = client.exchange(finalURL, HttpMethod.POST, entity, Map.class);if(response.getStatusCode().toString().equals("201") ||response.getStatusCode().toString().equals("202")){String resultBody = response.getBody().toString();String curentIndex = resultBody.substring(resultBody.indexOf("=")+1,resultBody.indexOf(","));//读取结果return getResult(host,port,sessionId,curentIndex);}return ERROR_CODE;}private static String getResult(String host,String port,String sessionId,String index){int i = 1;while( i< 10000){String finalURL = host+":"+port+"/"+SESSIONS+"/"+sessionId+"/"+STATEMENTS +"/"+ index;ResponseEntity<Map> resp = client.exchange(finalURL, HttpMethod.GET, null, Map.class);if(resp.getStatusCode().toString().equals("201")||resp.getStatusCode().toString().equals("200")){String resultBody = resp.getBody().toString();if(resultBody.toString().contains("state=available")){System.out.println("===============Index : "+i+"====================");return resultBody;}}else{return ERROR_CODE;}i++;}return ERROR_GETRESULT;}private static String getSession(String host,String port){ResponseEntity<Map> resp = client.exchange(host+":"+port+SESSIONS+"/", HttpMethod.GET, null, Map.class);System.out.println(resp.getBody().toString()+"getSession()======");String resultBody = resp.getBody().toString();if(resultBody.contains("[]")){try {if(createSparkSession(HOST,PORT)){ResponseEntity<Map> resp2 = client.exchange(host+":"+port+SESSIONS+"/", HttpMethod.GET, null, Map.class);String resultBody2 = resp2.getBody().toString();String sessionId = resultBody2.substring(resultBody2.indexOf("sessions=[{id=")+14,resultBody2.indexOf(", appId"));return sessionId;}else{System.out.println(ERROR_CREATE_SESSION+"======");}} catch (Exception e) {System.out.println(ERROR_CREATE_SESSION);e.printStackTrace();}}return resultBody.substring(resultBody.indexOf("[{id=")+5,resultBody.indexOf("[{id=")+6);}private static boolean createSparkSession(String host,String port) throws Exception{HttpEntity<String> entity = new HttpEntity<String>("{\"kind\": \"spark\"}",headers);ResponseEntity<Map> resp = client.exchange(host+":"+port+SESSIONS+"/", HttpMethod.POST, entity, Map.class);if(resp.getStatusCode().toString().equals("201")||resp.getStatusCode().toString().equals("200"))return true;return false;}public static void main(String args[]){System.out.println(sendPost(HOST,PORT,"{\"code\":\"100+100\"}"));}}

如果你觉得有地方要改,请告知我~

哪二维码奉上

这篇关于Java 创建与读取Livy Session以及结果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/204097

相关文章

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

Java中List转Map的几种具体实现方式和特点

《Java中List转Map的几种具体实现方式和特点》:本文主要介绍几种常用的List转Map的方式,包括使用for循环遍历、Java8StreamAPI、ApacheCommonsCollect... 目录前言1、使用for循环遍历:2、Java8 Stream API:3、Apache Commons

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

Java CompletableFuture如何实现超时功能

《JavaCompletableFuture如何实现超时功能》:本文主要介绍实现超时功能的基本思路以及CompletableFuture(之后简称CF)是如何通过代码实现超时功能的,需要的... 目录基本思路CompletableFuture 的实现1. 基本实现流程2. 静态条件分析3. 内存泄露 bug

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机