如何在typesafe配置文件中指定Spark的动态输入和输出路径



因此,我使用带有Spark的类型安全配置文件application.properties从外部读取参数。我的输入和输出路径是这样指定的:

dev.input.base.dir = s3://inp_bucket/my_dir/2021/03/21/00/
dev.output.base.dir = s3://oup_bucket/my_dir/2021/03/21/00/

现在这个代码应该每天运行,而且每天都必须处理上一个日期。所以基本上,我想用current_date()-1替换路径中的2021/03/21。我该如何做到这一点?

如果在typesafe配置中不可能,我可以在Scala中读取字符串后执行吗?

如果您的路径是字符串,您可以用正则表达式分解它,然后使用Date减去需要的天数

下面的快速示例:

val myPathAsString = "s3://input_bucket/my_dir/2021/03/21/00"
val pathPattern = """(w*://w*/w*)/(d{4}/d{2}/d{2})/(w*)""".r
val dateFormat = "yyyy/MM/dd"
val dtf = java.time.format.DateTimeFormatter.ofPattern(dateFormat)

myPathAsString match {
case pathPattern(prev, date, suffix) => {
val newDate = java.time.LocalDate.parse(date, dtf).minusDays(1)
s"$prev/${newDate.format(dtf)}/$suffix"
}
case _ => myPathAsString
}

最新更新