Go语言将Spark配置字符串解析为结构体
package main/n/nimport (/n/t/'encoding/json/'/n/t/'fmt/'/n/t/'strings/'/n)/n/n// Spark环境配置/ntype SparkEnv struct {/n/tLocalShuffleEnabled string json:/'localShuffleEnabled/'//n/tSkewJoinEnabled string json:/'skewJoinEnabled/'//n/tAdaptiveEnabled string json:/'adaptiveEnabled/'//n/tJoinReorderEnabled string json:/'joinReorderEnabled/'//n}/n/nfunc main() {/n/tconfig := 'sparkdefaults:spark.eventLog.enabled true/nspark.sql.adaptive.localShuffleReader.enabled true/nspark.sql.adaptive.skewJoin.enabled true/nspark.sql.adaptive.enabled true/nspark.sql.cbo.joinReorder.enabled false'/n/n/tenv := parseConfig(config)/n/tfmt.Println(env)/n}/n/nfunc parseConfig(config string) SparkEnv {/n/tlines := strings.Split(config, /'//n/')/n/tenv := SparkEnv{}/n/n/tfor _, line := range lines {/n/t/tparts := strings.Split(line, /' /')/n/t/tif len(parts) == 2 {/n/t/t/tkey := parts[0]/n/t/t/tvalue := parts[1]/n/n/t/t/tswitch key {/n/t/t/tcase /'sparkdefaults:spark.eventLog.enabled/':/n/t/t/t/tenv.LocalShuffleEnabled = value/n/t/t/tcase /'spark.sql.adaptive.localShuffleReader.enabled/':/n/t/t/t/tenv.SkewJoinEnabled = value/n/t/t/tcase /'spark.sql.adaptive.skewJoin.enabled/':/n/t/t/t/tenv.AdaptiveEnabled = value/n/t/t/tcase /'spark.sql.adaptive.enabled/':/n/t/t/t/tenv.JoinReorderEnabled = value/n/t/t/t}/n/t/t}/n/t}/n/n/treturn env/n}/n/n// 该代码定义了一个 SparkEnv 结构体,包含了所需的字段。parseConfig 函数接受字符串配置作为输入,将其拆分为行。然后,它将每一行拆分为键值对,并将值分配给 SparkEnv 结构体中的相应字段。最后,它返回填充后的结构体。
原文地址: https://www.cveoy.top/t/topic/pgrQ 著作权归作者所有。请勿转载和采集!