scala - 从 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
解决方案
如果当前日期与您要处理 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 命令以获取当前日期(同样,如果您尝试获取的分区文件与当前日期有任何关系) .
推荐阅读
- python - 带有 sympy 的变量的微分方程变化
- java - 插件定义的 JAXB 编组/解组对象
- html - “data-v-”是什么意思?
- typescript - 如何编写使用两个接口之一的类型?
- firebase - 无效查询:在调用 orderBy() 之前不能调用 startAt() 或 startAfter()
- rust - 无法导出 stdcall 方法
- python - 如何在标签编码时更改数据框中列的 dtype?
- haskell - 为什么Haskell中箭头函数的递归绑定无限循环?
- excel - 使用 excel 中的内置函数在列中查找最后一个“非空”文本匹配项
- kotlin - 在 Kotlin 中将一个对象转换为另一个对象的更好方法是什么?