Spark 2.2.0 - загрузка определенного списка файлов - PullRequest
0 голосов
/ 02 мая 2018

Я хочу загрузить определенный список файлов в Spark. Я сделал UDF, который фильтрует список файлов, поэтому я получил Seq<String> с файлами, которые я хочу загрузить. Я пытаюсь использовать public Dataset<Row> csv(scala.collection.Seq<String> paths) ссылку на API , но по некоторым причинам он говорит мне "перегруженное значение метода csv с альтернативами: (paths: String *) org.apache.spark.sql.DataFrame ( csvDataset: org.apache.spark.sql.Dataset [String]) org.apache.spark.sql.DataFrame (path: String) org.apache.spark.sql.DataFrame нельзя применять к (Seq [String]) "

Что мне здесь не хватает?

package main.scala.task

import org.apache.spark.sql.SparkSession


object Test {

  def date_filter: (java.io.File, Int) => Boolean = (file: java.io.File, threshold: Int) => {
    val pat1 = "(\\d+)".r // Pattern to capture timestamp
    val matcher1 = pat1.findFirstMatchIn(file.getName) // Capture timestamp

    matcher1 match {
      case Some(matched1) => {if (matched1.group(1).toInt > threshold) {true} else {false}}
      case None => false
    }
  }

  def main(args: Array[String]) {

    val spark = SparkSession.builder().getOrCreate()
    import spark.implicits._

    val path = "/my_folder/Test"

    val now: Int = 1486022490
    var files = new java.io.File(path).listFiles.filter(p => date_filter(p,now)).map(_.getName).toSeq

    val df = spark.read.csv(files)

  }
}

1 Ответ

0 голосов
/ 02 мая 2018

Ошибка говорит вам, что вам нужно использовать varargs вместо передачи последовательности строк.

val files: Seq[String] = Seq("/path/to/file1.txt", "/path/to/file2.txt")
val df = spark.read.csv(files:_*)

Кроме того, вы связались с документами Java вместо документов Scala , которые могут объяснить вашу путаницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...