【问题标题】:How to iterate the folder insider folder using pyspark?如何使用pyspark迭代文件夹内部文件夹?
【发布时间】:2021-12-23 14:20:24
【问题描述】:

1.所有 parquet 都在 blob 存储中可用。下面是文件夹结构。

FileInfo(path='wasbs://abcd@Storagename.blob.core.windows.net/dir1/dir2/2020-12-16/14-57-55/', name='14-57-55/', size=0)
FileInfo(path='wasbs://abcd@Storagename.blob.core.windows.net/dir1/dir2/2020-12-16/15-10-33/', name='15-10-33/', size=0)
FileInfo(path='wasbs://abcd@Storagename.blob.core.windows.net/dir1/dir2/2020-12-16/17-07-47/', name='17-07-47/', size=0)

2.如果我们在这里看到,容器内有多个子目录("dir1/dir2/2020-12-16/14-57-55/"),而 2020-12-16 文件夹内又有多个子文件夹。所以根据要求,我们需要从date(2020-12-16/17-07-47/) 中选择最新的时间戳 你能帮帮我吗?

【问题讨论】:

    标签: python apache-spark pyspark databricks


    【解决方案1】:

    由于您使用的是Databricks,因此您可以使用Databricks Utilities Python 包dbutils.fs 循环遍历目录列表并根据需要获取最新的时间戳。

    files = [
        'wasbs://Containername@Storagename.blob.core.windows.net/dir1/dir2/2020-12-16/14-57-55/',
        'wasbs://Containername@Storagename.blob.core.windows.net/dir1/dir2/2020-12-16/15-10-33/',
        'wasbs://Containername@Storagename.blob.core.windows.net/dir1/dir2/2020-12-16/17-07-47/'
    ]
    
    sorted(files)[-1]
    # wasbs://Containername@Storagename.blob.core.windows.net/dir1/dir2/2020-12-16/17-07-47/
    

    【讨论】:

    • 是的,我已经在 FileInfo 中对文件夹使用了以下命令:对于 dbutils.fs.ls(folder.path) 中的子文件夹:SubfolderPath.append(Subfolder.path)
    • 这样您就可以遍历它并获取您想要的确切文件/文件夹,对吧?
    • 输出返回 ['wasbs://Containername@Storagename.blob.core.windows.net/dir1/dir2/2020-12-16/14-57-55/', 'wasbs ://Containername@Storagename.blob.core.windows.net/dir1/dir2/2020-12-16/15-10-33/', 'wasbs://Containername@Storagename.blob.core.windows.net/ dir1/dir2/2020-12-16/17-07-47/]
    • 是的,我想选择最新的时间图路径
    • 当然,检查我的更新答案:)
    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 2021-03-31
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 2021-01-19
    相关资源
    最近更新 更多