根据动态模式从Pyspark中的列表过滤文件夹/文件

时间:2019-11-28 11:33:00

标签: apache-spark pyspark apache-spark-sql databricks azure-databricks

在pyspark中加载时,如何对文件夹和文件名使用模式。 我必须从以下结构的不同子文件夹中读取多个csv文件。 文件夹结构:

 root
  - 2019
     - Id_1.csv
     - Id_2.csv
     - Id_3.csv
  - 2018
     - Id_2.csv
     - Id_4.csv
  - 2017
     - Id_1.csv
     - Id_2.csv

以下代码加载root / 2019下的所有文件。

dfTest = spark.read.format("csv")\ 
    .options(header='true', delimiter = ';')\ 
    .load("mnt/root/2019/*.csv")

问题:

  1. spark.read.format是否可以自动并行化大量csv文件的加载? 用Id上的过滤器(从列表中选择Ids)加载这些Csv的并行性(性能)的最佳方法是什么。
  2. 如何基于年份和ID列表(Id列表很大,500k)对load()应用动态过滤? dfTest = spark.read.format("csv")\ .options(header='true', delimiter = ';')\ .load("mnt/root/<2017 to 2019 all folders>/*_<list of Ids>.csv")

已经检查了此link,但是模式“ ... / 2 [017-019] / *。csv”在尝试将所有键2 {0,1,7,9}用作时给出了错误我明白。如何实现这种模式?

0 个答案:

没有答案