所以,我有一个名为 application.properties
其中包含某些值,如:
dev.execution.mode = local
dev.input.base.dir = /Users/debaprc/Documents/QualityCheck/Data
dev.schema.lis = asin StringType,subs_activity_date DateType,marketplace_id DecimalType
我在spark代码中将这些值用作字符串,例如:
def main(args: Array[String]): Unit = {
val props = ConfigFactory.load()
val envProps = props.getConfig("dev")
val spark = SparkSession.builder.appName("DataQualityCheckSession")
.config("spark.master", envProps.getString("execution.mode"))
.getOrCreate()
现在我在spark代码中定义了一些函数(func1、func2等)。我想在我的示例中指定要调用的函数以及相应的参数 application.properties
文件。像这样:
dev.functions.lis = func1,func2,func2,func3
dev.func1.arg1.lis = arg1,arg2
dev.func2.arg1.lis = arg3,arg4,arg5
dev.func2.arg2.lis = arg6,arg7,arg8
dev.func3.arg1.lis = arg9,arg10,arg11,arg12
现在,一旦我指定了这些,我在spark中该怎么做,用提供的参数调用函数?或者我需要以不同的方式指定函数和参数吗?
1条答案
按热度按时间4ioopgfo1#
我同意@cchantep的观点,这种方法似乎是错误的。但是如果您仍然想这样做,我会将属性文件中的函数名与代码中的实际函数/方法解耦。
我试过这个,效果很好:
输出:
编辑:输出示例的更简单方法。