【发布时间】:2021-06-16 15:39:25
【问题描述】:
我正在读取多个路径并使用以下命令在这些路径中加载镶木地板文件:
val paths = List("/mnt/datamount/tmp/fldr=2345","/mnt/datamount/tmp/fldr=1234","/mnt/datamount/tmp/fldr=5678")
下面是读取命令:
val readdf = spark.read.format("parquet").load(paths: _*)
这会读取路径中的所有 parquet 文件,结构如下:
col1: String
col2: Int
col3: Long
有什么方法可以捕获路径信息并将值添加到数据框中?结构如下所示
col1: String
col2: Int
col3: Long
fldr: Int
使用 spark 的分区发现,它可以通过放置基本路径来捕获它,但是有 40000 个分区并且需要时间来读取。使用上述方法,我可以在几秒钟内读取文件,但无法捕获数据帧中的文件夹信息,这些信息需要下游与其他数据帧连接!
【问题讨论】:
-
您的路径同时包含
fldr1和fldr3。但是您的架构包含fldr。这是否意味着您不关心路径中的实际列名而只想将它们合并到 1 列中? -
我已经编辑了路径..fldr 将是列名
标签: scala apache-spark databricks