使用 Amazon emr-5.30.1 与 Livy 0.7 和 Spark 2.4.5
我们愿意使用 Apache Livy 作为 Spark 的 REST 服务。 我们想要使用的模式是会话而不是批处理。 尝试使用以下方法将 jar 上传到会话(通过正式 API):
curl -X POST \
-d '{"conf": {"kind" : "spark","jars": "s3://cjspro-emr-data/spark-examples.jar"}}' \
-H "Content-Type: application/json" localhost:8998/sessions
查看会话日志给人的印象是 jar 没有被上传。 更不用说使用请求的 jar 的代码片段不起作用。
有什么帮助吗?
我不确定 s3 中的 jar 引用是否有效,但我们使用引导操作并更新 Spark 配置做了同样的事情。
第1步:创建引导脚本并添加以下代码;
aws s3 cp s3://cjspro-emr-data/spark-examples.jar /home/hadoop/jars/
第 2 步:创建 Livy 会话时,使用 Livy 会话 API 中的 conf 键设置以下 Spark 配置
'conf':{'spark.driver.extraClassPath':'/home/hadoop/jars/*,
'spark.executor.extraClassPath':'/home/hadoop/jars/*'}
第 3 步:使用 Livy 会话 API 中的 jars 密钥发送要添加到会话的 jar。
'jars':['local:/home/hadoop/spark-examples.jar']
因此创建 Livy 会话的最终数据如下所示;
{
'kind':'pyspark',
'conf':'above mentioned dict',
'jars':['local:/home/hadoop/spark-examples.jar'],
'executorCores':'',
'executorMemory':'',
.
.
.
}
如何从上传的jar中调用函数?