pyspark 并行阅读多个文件夹

nlejzf6q  于 2023-01-16  发布在  Spark
关注(0)|答案(1)|浏览(222)

我有多个部分文件夹,每个文件夹包含 parquet 文件(如下文所示)。现在,在一个部分文件夹中,模式可以不同(列数或特定列的数据类型)。我的要求是,我必须读取所有部分文件夹,并根据预定义的传递模式最终创建一个单独的df。

/feed=abc -> contains multiple part folders based on date like below
/feed=abc/date=20221220
/feed=abc/date=20221221
.....
/feed=abc/date=20221231

由于我不确定哪些零件文件夹中有什么类型的更改,因此我将单独阅读每个零件文件夹,然后将模式与预定义模式进行比较,并进行必要的更改,即添加/删除col或类型转换col数据类型。一旦完成,我将结果写入临时位置,然后移动到下一个部件文件夹并重复相同的操作。一旦所有部件-文件夹已读取我正在一次性阅读临时位置以获得最终输出。
现在我想并行地做这个操作,也就是说,有并行的线程/进程(?),它将并行地读取部分文件夹,然后执行模式比较的逻辑和任何必要的修改,并写入到一个临时位置。这件事可能吗?
我在这里搜索了多目录的并行处理,但是在大多数情况下,它们在目录上有相同的模式,所以不知何故,它们使用通配符来读取输入路径位置并创建df,但这在我的情况下是行不通的。下面路径中的问题语句与我的类似,但在我的情况下,要读取的部分文件夹的数量是随机的,有时超过1000。此外,还有操作涉及比较固定的col类型以及。任何帮助将不胜感激。
Reading multiple directories into multiple spark dataframes

jc3wubiy

jc3wubiy1#

将现有ETL分为两个阶段。第一个阶段将现有数据转换为适当的模式,第二个阶段以方便的方式(使用 * 符号)读取转换后的数据。使用Airflow(或Oozie)为每个目录启动一个数据转换器应用程序。在数据转换器的所有示例成功完成后,运行联合应用程序。

相关问题