使用spark submit将HashMap参数传递给Scala
我用hashmap作为参数定义一个主对象使用spark submit将HashMap参数传递给Scala,scala,hashmap,nosuchmethoderror,spark-submit,Scala,Hashmap,Nosuchmethoderror,Spark Submit,我用hashmap作为参数定义一个主对象 def main(args: Map [ String, Any ] ) : Unit = { val v_COUNTRY_CODE =args("CTRY_CD").toString val v_REPORTING_DATE = args("REP_DT").toString val v_WorkSpaces = args("WS_NM").toString println("v_COUNTRY_CODE"+ v_C
def main(args: Map [ String, Any ] )
: Unit = {
val v_COUNTRY_CODE =args("CTRY_CD").toString
val v_REPORTING_DATE = args("REP_DT").toString
val v_WorkSpaces = args("WS_NM").toString
println("v_COUNTRY_CODE"+ v_COUNTRY_CODE)
println("v_REPORTING_DATE"+ v_REPORTING_DATE)
println("v_WorkSpaces"+ v_WorkSpaces)
println("Yes I am done")
sys.exit()
}
运行spark submit
时,如何传递Hashmap
参数:
spark submit--verbose--name-SAMPLE--master thread--deploy-mode-client--class com.scb.transformations.factScbB3dqBalancesFload/CTRLFW/btrapp\u-nas/RUBIK/hdpbatch/appscripts/./lib/rubikdoard.jar{“HIVE\u-SCHEMA”->“Test”}
抛出一个错误:
线程“main”java.lang.NoSuchMethodException中的异常:com.scb.transformations.factScbB3dqBalancesFload.main([Ljava.lang.String;)
Scala中的main()方法需要Array[String]类型的参数。因此,您只能通过CLI将空格分隔的字符串作为参数传递。如果您进一步希望将参数用作映射,则只需为键和值选择一个分隔符;在代码中拆分它们并创建一个Scala映射。例如,如果分隔符为“=”,则您可以将CLI参数作为参数传递
配置单元模式=测试SomeOtherParam=SomeValue
在代码中,您可以创建一个类似
val confMap=args.map(x=>(x.split(“”)(0),x.split(“”)(1)).toMap