spark能傳遞外部命名參數給main函數嗎?


查了資料好像都沒有辦法。只能通過:

  def main(args: Array[String]): Unit = {
    // 讀取參數
    var city = args(0)
    var input = args(1)
    var date = args(2)

下標來獲取。不過不確定,去stackoverflow發帖問下。

https://stackoverflow.com/questions/46845292/can-spark-submit-with-named-argument/46845525#46845525

確實不能,如果要的話,就需要自己寫代碼來解析:

object CommandLineUtil {

  def getOpts(args: Array[String], usage: String): collection.mutable.Map[String, String] = {
    if (args.length == 0) {
      log.warn(usage)
      System.exit(1)
    }

    val (opts, vals) = args.partition {
      _.startsWith("-")
    }

    val optsMap = collection.mutable.Map[String, String]()
    opts.map { x =>
      val pair = x.split("=")
      if (pair.length == 2) {
        optsMap += (pair(0).split("-{1,2}")(1) -> pair(1))
      } else {
        log.warn(usage)
        System.exit(1)
      }
    }

    optsMap
  }
}
val usage = "Usage:  [--citys] [--num]"
val optsMap = CommandLineUtil.getOpts(args, usage)
val citysValue = optsMap("citys")
val numValue = optsMap("num")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM