Spark参数解析之MasterArguments

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Spark参数解析之MasterArguments

前言

Spark参数解析的代码我郁闷了好一阵子,后面终于在快学Scala中看到的这种写法,记录一下。

关键源码

MasterArguments参数解析的时候有这么一段:

 private def parse(args: List[String]): Unit = args match {
    case ("--ip" | "-i") :: value :: tail =>
      Utils.checkHost(value)
      host = value
      parse(tail)

    case ("--host" | "-h") :: value :: tail =>
      Utils.checkHost(value)
      host = value
      parse(tail)

    case ("--port" | "-p") :: IntParam(value) :: tail =>
      port = value
      parse(tail)

    case "--webui-port" :: IntParam(value) :: tail =>
      webUiPort = value
      parse(tail)

    case ("--properties-file") :: value :: tail =>
      propertiesFile = value
      parse(tail)

    case ("--help") :: tail =>
      printUsageAndExit(0)

    case Nil => // No-op

    case _ =>
      printUsageAndExit(1)
  }

这个功能我们其实是知道,就是我们在启动Master的时候会传入类似

-i HOST, --ip HOST 这种参数,然后会解析,但是那个case语法有点奇怪,我把这部分功能单独抽取出来了:

 object ParamParser {
  var tableName:String=_
  var memory:String=_
  def main(args: Array[String]): Unit = {
    val list=List("--table","temp.test_table","--memory","4G")
    parse(list)
    print(tableName)
      print(memory)
  }

  //实际就是匹配特定的一段
  def parse(list:List[String]):Unit= list match {
    case "--table" :: value :: tail =>{
       tableName=value
      parse(tail)
    }
    case "--memory" :: value :: tail=>{
      memory=value;
    }
    case Nil=>
  }
}

这个语法关键的部分其实是scala中list的模式匹配,

case “–table” :: value :: tail 语义其实就是匹配这种结构

“–table”::接下来的元素::其他元素,tail就是其他的意思,这种结构连到一起就是匹配上的,所以参数里面的写法"–table","temp.test_table"会被匹配上,value则取值就是temp.test_table.

总结

这个地方其实还是对scala的语法上面掌握不够导致的,scala其实里头很多很骚气的写法,学习还需要加深才行!

目录
相关文章
|
2月前
|
JSON API 数据格式
requests库中json参数与data参数使用方法的深入解析
选择 `data`或 `json`取决于你的具体需求,以及服务器端期望接收的数据格式。
167 2
|
22天前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
33 0
|
22天前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
61 0
|
24天前
|
存储 缓存 并行计算
yolov5的train.py的参数信息解析
这篇文章解析了YOLOv5的`train.py`脚本中的参数信息,详细介绍了每个参数的功能和默认值,包括权重路径、模型配置、数据源、超参数、训练轮数、批量大小、图像尺寸、训练选项、设备选择、优化器设置等,以便用户可以根据需要自定义训练过程。
23 0
|
2月前
|
分布式计算 Java Apache
Apache Spark Streaming技术深度解析
【9月更文挑战第4天】Apache Spark Streaming是Apache Spark生态系统中用于处理实时数据流的一个重要组件。它将输入数据分成小批次(micro-batch),然后利用Spark的批处理引擎进行处理,从而结合了批处理和流处理的优点。这种处理方式使得Spark Streaming既能够保持高吞吐量,又能够处理实时数据流。
66 0
|
3月前
|
C# 开发者 Windows
震撼发布:全面解析WPF中的打印功能——从基础设置到高级定制,带你一步步实现直接打印文档的完整流程,让你的WPF应用程序瞬间升级,掌握这一技能,轻松应对各种打印需求,彻底告别打印难题!
【8月更文挑战第31天】打印功能在许多WPF应用中不可或缺,尤其在需要生成纸质文档时。WPF提供了强大的打印支持,通过`PrintDialog`等类简化了打印集成。本文将详细介绍如何在WPF应用中实现直接打印文档的功能,并通过具体示例代码展示其实现过程。
234 0
|
3月前
|
存储 Go UED
精通Go语言的命令行参数解析
【8月更文挑战第31天】
37 0
|
3月前
|
安全 数据安全/隐私保护
|
3月前
|
运维 监控 Java
【JVM 调优秘籍】实战指南:JVM 调优参数全解析,让 Java 应用程序性能飙升!
【8月更文挑战第24天】本文通过一个大型在线零售平台的例子,深入探讨了Java虚拟机(JVM)性能调优的关键技术。面对应用响应延迟的问题,文章详细介绍了几种常用的JVM参数调整策略,包括堆内存大小、年轻代配置、垃圾回收器的选择及日志记录等。通过具体实践(如设置`-Xms`, `-Xmx`, `-XX:NewRatio`, `-XX:+UseParallelGC`等),成功降低了高峰期的响应时间,提高了系统的整体性能与稳定性。案例展示了合理配置JVM参数的重要性及其对解决实际问题的有效性。
92 0
|
3月前
|
消息中间件 安全 RocketMQ
就软件研发问题之ACL 2.0接口不同的授权参数解析的问题如何解决
就软件研发问题之ACL 2.0接口不同的授权参数解析的问题如何解决

推荐镜像

更多