Scala和DataBricks:获取文件列表

时间:2018-10-04 15:45:25

标签: scala apache-spark amazon-s3 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 wrappedArray? (Spark)所建议的那样。

如何在Scala中生成文件列表,然后遍历它们?

1 个答案:

答案 0 :(得分:3)

您应该这样做:

if (prefManager.startMain(this)) {
        finish()
        startActivity(new Intent(this, MainActivity.class));
    }