【发布时间】:2018-07-10 15:40:13
【问题描述】:
我在一个目录中有文件,它们具有相同的命名约定。它看起来像这样:
id_timestamp_name_someint.txt
例如:
100_20180709010203_FIRST_3432.txt
其中 20180709010203 是 2018 年 07 月 09 日 01 小时 02 分 03 秒。
我这样列出这个目录中的文件名:
def getListOfFiles(dir: String): List[String] = {
val file = new File(dir)
file.listFiles.filter(_.isFile).sortBy(_.lastModified).map(_.getName).toList
}
现在我需要在 spark-scala 上定义命名约定,以便 spark 可以识别哪个位置是 id、时间戳和名称。因为我想将文件与它们的 id 进行比较,然后再与时间戳进行比较。有人知道怎么做吗?
【问题讨论】:
-
你能添加更多关于你想要达到的目标的信息吗(不确定你在这里比较的意思)?您想根据 id/timestamp/name 将不同的文件组加载到 spark 中吗?
-
我想比较 ID。如果它们相同,那么我想比较时间戳。如果日期比之前的“晚” - 这意味着我必须比较内容,如果有新记录,我必须添加这些,以便更新表格。但首先我必须定义命名约定,所以是通用的。 (第一个位置是ID,第二个时间戳等)
-
听起来您可以在“_”上拆分,然后使用案例类将文件名分隔为 id、时间戳等。这会有帮助吗?
-
这也是我目前所知道的。我无法构建我的代码。拆分是明确的..然后我不得不说第一块是ID,第二块是时间戳等等。
标签: scala apache-spark