Scala & DataBricks: получение списка файлов - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь составить список файлов в корзине S3 в Databricks в 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 wrappedArray?(Spark) Это невозможно использовать.

Как я могу создать список файлов в Scala, а затем выполнить итерацию по ним?

1 Ответ

0 голосов
/ 04 октября 2018

Вы должны сделать:

val name : String = ???   
val all_files : Seq[String] = dbutils.fs.ls("s3://bucket").map(_.path).filter(_.matches(name))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...