【问题标题】:Querying multiple files in multiple folders in Azure Storage account using Azure Databricks使用 Azure Databricks 查询 Azure 存储帐户中多个文件夹中的多个文件
【发布时间】:2022-06-10 16:39:08
【问题描述】:

我有一个 Azure 存储帐户,用于存储来自我的 Azure 诊断的日志文件。这些日志文件以小时和分钟的形式存储在多个文件夹中。例如:我在 blob 存储中的一个文件路径是这样的

resourceId=/SUBSCRIPTIONS/53TestSubscriptionIDB/RESOURCEGROUPS/AZURE-DEV/PROVIDERS/MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/AZURE-DEV/y=2022/m=05/d=23/h=13/m=00/

我想知道如何一次从多个文件夹中查询多个文件的步骤。例如,如果我必须从第 23 天到第 24 天查询数据,那么在 Databricks 中执行此操作的最佳方法是什么。这些文件夹包含带有多行 Json 的 json 文件。谢谢

【问题讨论】:

标签: azure-databricks


【解决方案1】:

如果你想读取所有可用的文件,你可以使用通配符。

path = "resourceId=/SUBSCRIPTIONS/53TestSubscriptionIDB/RESOURCEGROUPS/AZURE-DEV/PROVIDERS/MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/AZURE-DEV/y=*/m=*/d=*/h=*/m=*/*"
spark.read.option("header","true").format("csv").load(pathList)

如果你只想读取特定的一组文件,最好生成一个你想读取的路径列表,你可以在spark读取函数中使用。

pathList = [
  "resourceId=/SUBSCRIPTIONS/53TestSubscriptionIDB/RESOURCEGROUPS/AZURE-DEV/PROVIDERS/MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/AZURE-DEV/y=2022/m=05/d=23/h=13/m=00/",
  "resourceId=/SUBSCRIPTIONS/53TestSubscriptionIDB/RESOURCEGROUPS/AZURE-DEV/PROVIDERS/MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/AZURE-DEV/y=2022/m=05/d=23/h=13/m=01/"
]
spark.read.option("header","true").format("csv").load(pathList)

本例中的路径列表,您可以根据要处理的文件以编程方式生成,例如

pathList = []
for i in range(24):
  newPath = f"resourceId=/SUBSCRIPTIONS/53TestSubscriptionIDB/RESOURCEGROUPS/AZURE-DEV/PROVIDERS/MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/AZURE-DEV/y=2022/m=05/d=23/h={i}/m=01/"
  pathList.append(newPath)

spark.read.option("header","true").format("csv").load(pathList)

此示例将从日期 2022-05-23 的第 1 分钟开始每隔一小时 (0-23) 读取一次。

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    相关资源
    最近更新 更多