如何在 Apache livy 中提交 pyspark 作业?
Posted
技术标签:
【中文标题】如何在 Apache livy 中提交 pyspark 作业?【英文标题】:How to submit pyspark jobs in Apache livy? 【发布时间】:2018-07-12 13:13:30 【问题描述】:spark-submit --packages com.databricks:spark-redshift_2.11:2.0.1 --jars /usr/share/aws/redshift/jdbc/RedshiftJDBC4.jar /home/hadoop/test.py
如何以 Apache livy 格式指定上述 (pyspark) spark-submit 命令?
我尝试了以下方法:
curl -X POST --data '"file": "/home/hadoop/test.py", "conf":
"com.databricks": "spark-redshift_2.11:2.0.1", \
"queue": "my_queue", "name": "Livy Example", "jars" :
"/usr/share/aws/redshift/jdbc/RedshiftJDBC4.jar"', \
-H "Content-Type: application/json" localhost:8998/batches
Refered the following livy article spark livy rest api
同样出现以下错误:
"Unexpected character ('“' (code 8220 / 0x201c)): was expecting double-quote to start field name\n at [Source: (org.eclipse.jetty.server.HttpInputOverHTTP); line: 1, column: 37]
【问题讨论】:
您是否剪切和粘贴错误,或者您的数据中有那些智能引号? (参见conf
和com.databricks
...)
让我检查一下...
还是同样的错误。
【参考方案1】:
你的命令有误,请用下面的例子来构造命令。
spark-submit 命令
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--jars a.jar,b.jar \
--pyFiles a.py,b.py \
--files foo.txt,bar.txt \
--archives foo.zip,bar.tar \
--master yarn \
--deploy-mode cluster \
--driver-memory 10G \
--driver-cores 1 \
--executor-memory 20G \
--executor-cores 3 \
--num-executors 50 \
--queue default \
--name test \
--proxy-user foo \
--conf spark.jars.packages=xxx \
/path/to/examples.jar \
1000
Livy REST JSON 协议
“className”: “org.apache.spark.examples.SparkPi”,
“jars”: [“a.jar”, “b.jar”],
“pyFiles”: [“a.py”, “b.py”],
“files”: [“foo.txt”, “bar.txt”],
“archives”: [“foo.zip”, “bar.tar”],
“driverMemory”: “10G”,
“driverCores”: 1,
“executorCores”: 3,
“executorMemory”: “20G”,
“numExecutors”: 50,
“queue”: “default”,
“name”: “test”,
“proxyUser”: “foo”,
“conf”: “spark.jars.packages”: “xxx”,
“file”: “hdfs:///path/to/examples.jar”,
“args”: [1000],
https://community.hortonworks.com/articles/151164/how-to-submit-spark-application-through-livy-rest.html
https://dzone.com/articles/quick-start-with-apache-livy
--包。使用此命令时将处理所有传递依赖项。
在 Livy 中,您需要转到解释器设置页面并在 livy 设置下添加新属性 -
livy.spark.jars.packages
以及价值
com.databricks:spark-redshift_2.11:2.0.1
重新启动解释器并重试查询。
【讨论】:
--packages com.databricks:spark-redshift_2.11:2.0.1 如何指定 spark 提交中给出的这个包部分。 试试 "spark.jars.packages":"com.databricks:spark-redshift_2.11:2.0.1" "conf": "spark.jars.packages": "com.databricks:spark-redshift_2.11:2.0.1",我收到无效的 json 错误 scala 错误,我不能粘贴确切的错误,因为我离开工作地点。 进入解释器设置页面,并在 livy 设置下添加新属性 - livy.spark.jars.packages 和值 com.databricks:spark-redshift_2.11:2.0.1 重新启动解释器并重试查询。 @vaquarkhan 如何将 pyspark 作业提交给 livy。 “文件”字段将是 pyspark 文件吗?在上面的 sn-p 中包含“file”:“hdfs:///path/to/examples.jar”。 pyspark 应该是什么?以上是关于如何在 Apache livy 中提交 pyspark 作业?的主要内容,如果未能解决你的问题,请参考以下文章