scala - Scala & DataBricks:获取文件列表
问题描述
我正在尝试在 Scala 中的 Databricks 上的 S3 存储桶中列出文件,然后按正则表达式拆分。我对 Scala 很陌生。python等价物是
all_files = map(lambda x: x.path, dbutils.fs.ls(folder))
filtered_files = filter(lambda name: True if pattern.match(name) else False, all_files)
但我想在 Scala 中做到这一点。
来自https://alvinalexander.com/scala/how-to-list-files-in-directory-filter-names-scala
import java.io.File
def getListOfFiles(dir: String):List[File] = {
val d = new File(dir)
if (d.exists && d.isDirectory) {
d.listFiles.filter(_.isFile).toList
} else {
List[File]()
}
}
但是,这会产生一个空列表。
我也想过
var all_files: List[Any] = List(dbutils.fs.ls("s3://bucket"))
但这会产生一个列表,例如(长度为 1)
all_files: List[Any] = List(WrappedArray(FileInfo(s3://bucket/.internal_name.pl.swp, .internal_name.pl.swp, 12288), FileInfo(s3://bucket/file0, 10223616), FileInfo(s3://bucket/, file1, 0), ....)
其长度为 1。我无法将其转换为数据帧,正如How to iterate scala WrapArray?所建议的那样 (火花)这不可用。
如何在 Scala 中生成文件列表,然后遍历它们?
解决方案
你应该做 :
val name : String = ???
val all_files : Seq[String] = dbutils.fs.ls("s3://bucket").map(_.path).filter(_.matches(name))
推荐阅读
- reactjs - 反应路由器 5,useHistory 和 2 个路由器
- amazon-web-services - 无法在弹性豆茎中请求日志
- javascript - 在滚动显示一个,隐藏另一个 div,反之亦然,并且一旦单击第二个 div,将其删除并显示第一个 div
- mysql - 为什么 mysql NodeJS 模块不能识别有效命令?
- c# - 为什么我的代码不让我调用 var Diceroll?
- java - Java14如何从文本文件中找到对应的arrayList条目
- json - 如何从 JSON 文件创建 Kafka 主题,然后提取主题的子集并输出到另一个 JSON 文件
- jquery - ajax调用成功后如何显示侧边栏
- java - 来自 Firestore 的数据未显示在 RecyclerView 中
- azure-functions - 通过 python SDK 更新 Cosmos 吞吐量