(2)Apache Livy、rest调用

参考:https://blog.csdn.net/gx304419380/article/details/79868404
https://blog.csdn.net/weixin_44233163/article/details/85703603 https://msd.misuland.com/pd/2884250171976192174坑1:(批处理)非交互式下 上传本地文件报错问题(2)Apache Livy、rest调用 - 图1这里假设spark使用yarn模式,所以所有文件路径都默认位于HDFS中。虽然我没有采用yarn依然会报错如果是本地开发模式的话,直接使用本地文件即可(注意必须配置livy.conf文件,设置livy.file.local-dir-whitelist = directory,以允许文件添加到session)。坑2:交互式下创建session后(未等 session的 state=idle)直接发送 执行的脚本会有异常(2)Apache Livy、rest调用 - 图2(2)Apache Livy、rest调用 - 图3
两种使用方式
1、交互式会话
比如用户使用spark-shell或是pyspark脚本启动Spark应用程序,伴随应用程序启动的同时Spark会在当前终端启动REPL(Read–Eval–Print Loop),即是(读入,计算,输出)来接收用户的代码输入,并将其编译成Spark作业提交到集群上去执行; 交互式:说白了,就是把原本在spark-shell里面执行的语句,通过http请求发送到livy服务端,然后livy在服务端开启spark-shell执行你传过来的语句;
1.1创建session
工具采用postman,首先新建一个session(其实就是开启一个spark application):请求方式post,请求URL为 eg: http://47.98.253.2:8998/sessions请求体类似如下格式:{ “kind”: “spark”, “conf” : { “spark.cores.max” : 4, “spark.executor.memory” : “512m” } }(2)Apache Livy、rest调用 - 图4
1.2发送code
http://47.98.253.2:8998/sessions/0/statements(2)Apache Livy、rest调用 - 图5(2)Apache Livy、rest调用 - 图61.3 查看session的状态1.4 删除会话1.5查看提交的 (代码片段) 执行状态1.6 取消正在提交的 (代码片段)http://livy.incubator.apache.org/docs/latest/rest-api.html注意

2、批处理会话(Batch Session)
批处理的程序逻辑由用户实现并编译打包成jar包,spark-submit脚本启动Spark应用程序来执行用户所编写的逻辑,与交互式处理不同的是批处理程序在执行过程中用户没有与Spark进行任何的交互。
批处理式:说白了,帮你做spark-submit的工作,同样通过http请求吧参数发到livy服务端。
url:http://47.98.253.2:8998/batchesspark://tian:7077

postman发送 以standalone执行job (2)Apache Livy、rest调用 - 图7response结果:(2)Apache Livy、rest调用 - 图8(2)Apache Livy、rest调用 - 图9
2.2、查询提交job作业完成状态http://47.98.253.2:8998/batches/“state”:”success” 代表(2)Apache Livy、rest调用 - 图10

3、查看运行结果:(2)Apache Livy、rest调用 - 图11LivyUi (2)Apache Livy、rest调用 - 图12