如何将路径列表传递到spark.read.textFile?

时间:2018-08-14 14:21:11

标签: apache-spark apache-spark-sql

当前,我们可以成功地将多个日志文件(文本)加载到Spark(v 2.1)数据框中,并使用glob语法将每一行映射到链接的文件路径,例如。

    val df = spark.read.textFile(
      "wasb://container_name@storage_name/base_dir/2018/*.txt"    
    ).withColumn("input_file_name", input_file_name) // Add column with filename for grouping.

我们现在要将预先准备好的路径列表“ blob_paths”传递给“ spark.read.textFile”,即将代码段重写为

    val df = spark.read.textFile(
      blob_paths    
    ).withColumn("input_file_name", input_file_name) // Add column with filename for grouping.

但是我们无法完成这项工作。路径尚可,但是在以下

中,列表似乎破坏了“ spark.read.textFile”
    <console>:31: error: overloaded method value textFile with alternatives:
      (paths: String*)org.apache.spark.sql.Dataset[String] <and>
      (path: String)org.apache.spark.sql.Dataset[String]
     cannot be applied to (List[String])
           val df = spark.read.textFile(
                        ^

有人知道如何解决此问题吗?

3 个答案:

答案 0 :(得分:1)

一个类似的例子,应该会有所帮助:

val paths = Seq(
   "/FileStore/tables/ALT2018_01.txt",
   "/FileStore/tables/ALT2018_02.txt")

val df2 = 
   spark.read.format("csv")
  .option("sep", ",")
  .option("inferSchema", "true")
  .option("header", "false")
  .load(paths: _*) 

df2.show

答案 1 :(得分:0)

板球007作品的答案(注意“:_ *”)

    val df2 = spark.read.textFile(
        blob_paths:_*
    ).withColumn("input_file_name", input_file_name) // Add column with filename for grouping.

非常感谢

bluephantom的答案也有效:)

答案 2 :(得分:-2)

“ spark.read.textFile”方法不支持列表,您可以尝试使用此方法

spark.read.textFile("patha", "pathb")

它将起作用。希望对您有帮助。