如何在类型安全配置文件中为 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/

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

如果在类型安全配置中无法实现,我可以在读取字符串后在 Scala 中实现吗?

AAAGIS 回答:如何在类型安全配置文件中为 Spark 指定动态输入和输出路径?

如果您的路径是字符串,您可以使用正则表达式将其分解,然后使用 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
}
本文链接:https://www.f2er.com/695275.html

大家都在问