apache-spark - Apache Livy:如何共享同一个 Spark 会话?
问题描述
考虑到 livy 的批处理模式,我已经提交了一个文件/jar,其中写入了我的 spark 逻辑。我如何与另一个人分享由一个人创建POST/batches
的{'id':1}
火花POST/batches
会话{'id':2}
?这样做的原因是,我已经应用并存储在数据框中的转换我需要通过共享相同的会话在不同的任务中使用它(我可以编写然后读取结果,但我想消除该开销)
问题:
我还面临的一个问题是在执行以下操作时,如果我使用 spatk 功能sc.parallelize()
或spark.read.csv()
在我的代码中,我会得到 sc/spark 未定义
headers = {" Content-type" : "application/json"}
data = {'file' : '<file/path> ' }
request.post( host+'/batches' , data= json.dumps(data), headers = headers }
上面有什么我遗漏的,因为当我在交互模式下执行此操作时,sc/spark 会自动初始化?
更新
data = {'kind':'pyspark'}
r = requests.post(host + '/sessions', data=json.dumps(data),headers=headers)
data = {'code':'rdd1 = sc.parallelize([1,2,3])'}
rqm = requests.post(host + '/sessions/0/statements', data=json.dumps(data),headers=headers)
pprint.pprint(rqm.json())
rsm = r = requests.get(host + '/sessions/0/statements')
pprint.pprint(rsm.json())
data = {'code':'print(rdd1.collect())'}
rqs = requests.post(host + '/sessions/0/statements', data=json.dumps(data),headers=headers)
pprint.pprint(rqs.json())
rss = requests.get(host + '/sessions/0/statements')
pprint.pprint(rss.json())
这样我就可以在交互模式下共享sessions
和访问。rdd
我怎样才能在batch
模式下做同样的事情?
请提供一个简单的示例代码,因为我是新手,我很难理解复杂的代码。
解决方案
请使用具有自己的 spark 上下文的 Programatic API [ https://livy.incubator.apache.org/docs/latest/programmatic-api.html][1]
您需要创建一个 LivyClient 实例并将您的应用程序代码上传到 Spark 上下文并提交。
我没有看到用于编程 livy 的 python API。所以你可能必须使用 Scala 或 Java
推荐阅读
- r - 尝试编织我的 r-markdown {R} 后出现“找不到对象”错误
- python - MongoDB 中的会话如何工作?
- graphql - 使用 GraphQL 仅查询所选语言的降价页面
- c# - Text Mesh Pro - 自动尺寸加内容尺寸拟合器
- php - 在生产中获取公共文件夹和存储文件夹中的新文件
- python - 取列表的总和,但将奇数元素更改为负数
- python - 猜测项目如何添加猜测限制Python
- javascript - 为什么解构对象键会在 javascript 中出错?
- vim - Vim 从单词的第一个字符之后的字符直接删除直到单词的结尾
- flutter - 自定义容器颤动的位置