遍历多个文件夹中的多个文件,如果名称匹配条件,则将其全部加载到DF中

时间:2019-10-27 15:15:11

标签: apache-spark apache-spark-sql

我试图遍历数据湖中许多文件夹中的许多文件。我有两个想法,如下所示。

// first attempt
import org.apache.spark.sql.functions.input_file_name
val myDFCsv = spark.read.format("csv")
   .option("sep","|")
   .option("inferSchema","true")
   .option("header","false")
   .load("mnt/rawdata/corp/CW*.gz")
   .withColumn("file_name", input_file_name())

myDFCsv.count()

// second attempt
import org.apache.spark.sql.functions.input_file_name

val myDFCsv = spark.read
   .option("sep", "|")
   .option("inferSchema", "true")
   .option("header", "false")
   .csv("mnt/rawdata/corp/CW*.gz")
   .withColumn("file_name", input_file_name())

myDFCsv.count()

在两种情况下,我都会收到此错误。

myDFCsv:org.apache.spark.sql.DataFrame = [_c0: string, _c1: string ... 3 more fields]
import org.apache.spark.sql.functions.input_file_name
myDFCsv: org.apache.spark.sql.DataFrame = [_c0: string, _c1: string ... 3 more fields]
res11: Long = 97

这必须非常接近工作,但是似乎有些问题了,我无法确定它是什么。有人可以指出问题,然后让我知道这里出了什么问题吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

这里没有什么错,这不是错误,输出告诉您:

  1. 具有一个名为:myDFCsv的数据框,其中包含5个字段
  2. 导入了org.apache.spark.sql.functions.input_file_name
  3. 具有一个名为myDFCsv的数据框,其中包含5个字段
  4. 计算出数据框中的行数,结果为97

您可以使用以下命令开始使用数据框并查看其内容:myDFCsv.show(false)

您还可以使用以下操作检查数据框的架构: myDFCsv.printSchema()

我希望这会有所帮助,