如何通过Spark提交传递外部参数

时间:2016-03-03 21:52:33

标签: java apache-spark spark-submit

在我的应用程序中,我需要连接到数据库,因此我需要在提交应用程序时传递IP地址和数据库名称。

我按如下方式提交申请:

./spark-submit --class class name --master spark://localhost:7077 \
--deploy-mode client /home/hadoop/myjar.jar

2 个答案:

答案 0 :(得分:11)

如果您选中the official documentation,则会看到spark-submit具有以下语法:

./bin/spark-submit \
  --class <main-class>
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf <key>=<value> \
  ... # other options
  <application-jar> \
  [application-arguments]

您可以使用application-argumentsconf将所需配置分别传递给main方法和SparkConf

答案 1 :(得分:2)

正如zero323所述,您可以使用the link

中的 spark-submit 命令
  ./bin/spark-submit \
  --class <main-class>
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf <key>=<value> \
  ... # other options
  <application-jar> \
  [application-arguments]

这里, conf 用于传递应用程序运行所需的Spark相关配置,就像任何特定属性(执行程序内存)一样,或者如果要覆盖设置的默认属性的火花default.conf

就您的用例而言,您希望将IP传递给应用程序以连接到数据库,然后您可以使用在JAR之后传递的 [application-arguments]

将主要设置为:

def main(args: Array[String])

然后你可以接受任何作为.jar行后给出的参数。

请参阅for more details