Scala 和 DataBricks:获取文件列表
Scala & DataBricks: Getting a list of Files
我正在尝试在 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。我无法按照 的建议将其转换为数据帧。这不可用。
如何在 Scala 中生成文件列表,然后遍历它们?
你应该这样做:
val name : String = ???
val all_files : Seq[String] = dbutils.fs.ls("s3://bucket").map(_.path).filter(_.matches(name))
我正在尝试在 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。我无法按照
如何在 Scala 中生成文件列表,然后遍历它们?
你应该这样做:
val name : String = ???
val all_files : Seq[String] = dbutils.fs.ls("s3://bucket").map(_.path).filter(_.matches(name))