如何在typesafe配置文件中为spark指定动态输入和输出路径?

rfbsl7qr  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(335)

所以,我用的是类型安全配置文件 application.properties 用spark读取外部参数。我的输入和输出路径如下所示:

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/

现在这个代码应该每天都运行,而且每天都必须处理上一个日期。所以基本上,我想替换 2021/03/21 在路径中 current_date()-1 . 我如何做到这一点?
如果在typesafe配置中不可能,我可以在读取字符串后执行吗 Scala ?

o8x7eapl

o8x7eapl1#

如果你的路径是一个字符串,你可以用正则表达式分解它,然后用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
}

相关问题