是否有一种简单的方法来处理blob存储中不一致的文件路径?



我有一个服务,每天将一堆.gz文件放到一个azure容器中。我希望拿起这些文件,并将底层的txt/json转换为表。令我困惑的问题是,该服务在路径中添加了两个随机字符串前缀文件夹和一个日期文件夹。

下面是一个示例文件路径:

容器/服务出口/z633dbc1 - 3934 - 4 - cc3 ad29 e82c6e74f070/2022 - 07 - 12/42625mc4 - 47 - r6 - 4 - bgc - ac72 - 11092822 - dd81 11092822/* . gz

我想到了三个可能的解决方案:

  1. 我不一定需要数据持久化。理论上,我可以遍历每个文件夹并查找.gz,打开并将它们写入输出文件,然后返回并删除路径中的文件夹。

  2. 创建某种检查点文件,跟踪每个gzip的每个路径,然后在运行时配置一些与检查点文件比较的方式。我不确定随着时间的推移,这样做的效率会有多高。

  3. 使用RegEx查找与前缀的模式/长度匹配的随机字符串,然后查找当前日期文件夹。如果日期不是今天,就不去。

我是否缺少能够简化此操作的预构建库或函数?我四处搜索,但没有找到任何关于这类问题的讨论。

你可以用考拉来做这件事。

import databricks.koalas as ks
path = "wasbs://container/service-exports/*/*/*.gz" 
df = ks.read_csv(path, sep="','", header='infer')

如果所有的.gz文件有相同的列,那么df将包含.gz文件中连接的所有数据。