首页 > 解决方案 > 从 Blob 读取 JSON 数据,其中文件存储在每天自动递增的日期文件夹中

问题描述

hdfs blob 每天以以下格式存储 json 数据。我需要每天使用 spark.read.json() 读取 json 数据。例如:今天我想阅读 day=01 day 的文件,明天我想阅读 day=02 day 的文件。有没有我可以在 Scala 中编写的逻辑,它会自动增加日期,同时考虑月份和年份。任何帮助我都会非常感激。

/signals/year=2019/month=08/day=01
/signals/year=2019/month=08/day=01/*****.json
/signals/year=2019/month=08/day=01/*****.json

/signals/year=2019/month=08/day=02

/signals/year=2019/month=08/day=02/*****_.json
/signals/year=2019/month=08/day=02/*****_.json

标签: scalaapache-spark

解决方案


如果当前日期与您要处理 JSON 文件的日期之间有任何关系,您可以使用下面的 Scala 代码获取当前日期(您可以添加/减去任意天数),并将其作为 @pasha701 在您的 Spark 应用程序中使用建议。

scala> import java.time.format.DateTimeFormatter
scala> import java.time.LocalDateTime

scala> val dtf = DateTimeFormatter.ofPattern("dd") // you can get the Year and Month like this.
scala> val now = LocalDateTime.now()
scala> println(dtf.format(now))
02

scala> println(dtf.format(now.plusDays(2))) // Added two days on the current date
04

只是一个想法:如果您使用的是 Azure 的 Databricks,那么您可以使用“%sh”命令在笔记本中运行 shell 命令以获取当前日期(同样,如果您尝试获取的分区文件与当前日期有任何关系) .


推荐阅读