是否有可能编写一个Spark脚本,该脚本具有可以通过名称而不是args()数组中的索引引用的参数?我有一个脚本有4个必需的参数,根据这些参数的值,可能需要最多3个额外的参数.例如,在一种情况下,args(5)可能是我需要输入的日期.我是另一个,那个日期可能会因为我需要的另一个论点而最终出现在args(6)中.
烫伤实现了这一点,但我不知道Spark的作用.
J *_*ath 6
我实际上简单地克服了这个问题.您只需要在每个参数前加上一个名称,并在调用应用程序时使用分隔符" - "
spark-submit --class com.my.application --master yarn-client ./spark-myjar-assembly-1.0.jar input--hdfs:/path/to/myData output--hdfs:/write/to/yourData
Run Code Online (Sandbox Code Playgroud)
然后在代码的开头包含这一行:
val namedArgs = args.map(x=>x.split("--")).map(y=>(y(0),y(1))).toMap
Run Code Online (Sandbox Code Playgroud)
这会将默认的args数组转换为名为namedArgs的Map(或任何你想要调用它的地图.从那里开始,只需参考Map并按名称调用所有参数.
| 归档时间: |
|
| 查看次数: |
1062 次 |
| 最近记录: |