spark提交,如何读取用户输入参数?

vmdwslir  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(610)

需要传递额外的输入参数到spark作业进行验证。我知道在uber.jar之后,我们可以通过给空格来传递所有必需的参数。可以选择使用scala读取如下参数

spark-submit --jar uber.jar -Dtable.name=emp -Dfiltercondition=age,name
p4rjhz4m

p4rjhz4m1#

-D 格式主要用于java属性,而不是cli参数。
spark像其他java/scala程序一样,通过appmain方法接受参数。

object App {

 def main(args: Array[String]): Unit = {
    val cmd: CommandLine = parseArg(args) // <-- here
    val master = cmd.getOptionValue("master", "local[*]") // parse args

    val spark = SparkSession.builder()
      .appName(App.getClass.getName)
      .master(master)
      .getOrCreate()
    ...
  }

  // Using Apache Commons CLI
  private def parseArg(args: Array[String]): CommandLine = {
    import org.apache.commons.cli._

    val options = new Options

    ...
  }

那么 spark-submit --jar app.jar --className=my.app.App --master='local[*]'

相关问题