如何将数据从 datalake 中的多个子文件夹加载到 azure databricks 中的数据框

How to load data from multiple subfolders in datalake to a dataframe in azure databricks

我有几个 csv 文件存在于 azure datalake 的多个子文件夹中。我想获取这些文件中存在的所有数据并将它们加载到 azure databricks 中的数据框中。 databricks中的文件夹和子文件夹的结构如下

Folder name -> YearName2019 -> Month1 ->filename
                            -> Month2 ->filename
                             .
                            ->Month12 ->filename


           -> YearName2020  ->Month1  ->filename
                            .
                            .
                            ->Month12 ->filename
   

我正在尝试使用以下代码从所有子文件夹中读取数据,但它不起作用

df=spark.read.load('/FolderName/*' ,format='csv' ,sep=',' ,header='True' ,inferSchema=True)

你可以先收集所有的加载路径,例如制作路径列表 listOfPaths,然后将其作为参数传递给 .load 方法。

看看下面的例子:

val listOfPaths: List[String] = List("Folder name/YearName2019/Month1/filename","Folder name/YearName2019/Month2/filename")
val dataDf = spark.read.format("csv")
  .option("sep", ";")
  .option("inferSchema", "true")
  .option("header", "true")
  .load(listOfPaths: _*)

也许您会对与 Spark 相关的其他主题感兴趣,我鼓励您访问我的博客。: https://bigdata-etl.com/articles/big-data/apache-spark/