我正在尝试使用Livy
远程提交多个Spark
jobs。假设我想执行以下操作spark-submit
远程任务(包含所有选项)
spark-submit \
--class com.company.drivers.JumboBatchPipelineDriver \
--conf spark.driver.cores=1 \
--conf spark.driver.memory=1g \
--conf spark.dynamicAllocation.enabled=true \
--conf spark.serializer='org.apache.spark.serializer.KryoSerializer' \
--conf "spark.executor.extraJavaOptions= -XX:+UseG1GC" \
--master yarn \
--deploy-mode cluster \
/home/hadoop/y2k-shubham/jars/jumbo-batch.jar \
\
--start=2012-12-21 \
--end=2012-12-21 \
--pipeline=db-importer \
--run-spiders
注意:后面的选项JAR
(--start
, --end
等)特定于我的Spark
应用。我在用着scopt https://github.com/scopt/scopt为了这
我知道我可以提供上面的所有各种选项spark-submit
命令使用Livy
POST/batches request https://livy.incubator.apache.org/docs/latest/rest-api.html#post-batches.
但因为我必须赚超过250spark-submit
是远程的,我想利用Livy
's 会话管理功能;即,我想要Livy
创建一个SparkSession
一次然后将其用于我所有的spark-submit
要求。
The POST/sessions request https://livy.incubator.apache.org/docs/latest/rest-api.html#post-sessions允许我指定很多选项来实例化SparkSession
远程。然而我看不到session
争论 in POST/batches request https://livy.incubator.apache.org/docs/latest/rest-api.html#post-batches.
我怎样才能利用SparkSession
我使用创建的POST/sessions
请求提交我的Spark
工作使用POST/batches
要求?
我参考了以下示例,但它们仅演示了提供(python
) code for Spark
工作范围内Livy
's POST
request
- pi_app https://github.com/apache/incubator-livy/blob/master/examples/src/main/python/pi_app.py
- rssanders3/airflow-spark-operator-plugin https://github.com/rssanders3/airflow-spark-operator-plugin/blob/master/example_dags/livy_spark_operator_python_example.py
- livy/examples https://livy.incubator.apache.org/examples/
我怎样才能利用SparkSession
我使用创建的POST/sessions
请求提交我的Spark
工作使用POST/batches
要求?
- 在这个阶段,我几乎可以肯定这不可能现在
-
@卢克曼·加尼的评论 https://groups.google.com/a/cloudera.org/forum/#!msg/livy-user/TFLc7wIaQ8Y/EydZM-4HBAAJ给出了一个相当好的暗示
batch
-mode 适用于不同的用例session
-mode / LivyClient
我确定这是不可能的原因是(如果我错了/不完整,请纠正我)如下
-
POST/batches
请求接受JAR
- This inhibits
SparkSession
(or spark-shell
) from being re-used (without restarting the SparkSession
) because
- 你会如何删除
JAR
从以前的POST/batches
要求?
- 你会如何添加
JAR
从当前POST/batches
要求?
这是更完整的图片
- 实际上POST/sessions https://livy.incubator.apache.org/docs/latest/rest-api.html#post-sessions允许您通过
JAR
- 但随后与之进一步互动
session
(显然)不能采取JAR
s
- 它们(进一步的交互)只能是简单的脚本(例如
PySpark
: 简单的python
文件)可以加载到session
(并不是JAR
s)
可能的解决方法
- 所有那些拥有他们的
Spark
-应用程序写在Scala
/ Java
,必须捆绑在JAR
, 将会面临这个困难; Python
(PySpark
)用户在这里很幸运
- As a possible workaround, you can try this (i see no reason why it wouldn't work)
- 启动一个
session
和你的JAR
via POST/sessions
request
- 然后调用入口点-
class
从你的JAR
via python
(提交POST /sessions/{sessionId}/statements
)任意多次(与possibly不同的参数)。虽然这不会是直截了当,听起来很有可能
最后我找到了更多替代方案Livy
for remote spark-submit
; see this https://stackoverflow.com/a/54092691/3679900
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)