2

我有一个 ADL 帐户设置了两个存储:常规 ADLS gen1 存储设置为默认值和启用了“分层命名空间”的 blob 存储,如果这很重要,则使用存储密钥连接到 ADLS(此时没有托管身份) . 第一个与问题无关,只是为了这个问题,第二个注册在 name 下testdlsg2。我在 Azure 门户的数据资源管理器中都看到了。

现在,我在该 blob 存储中有一个名为的容器,logs并且在该容器的根目录中有我要处理的日志文件。

如何从 U-SQL 引用特定存储和特定容器中的这些文件?

我已经阅读了 ADLS Gen2 URI文档并提出了以下 U-SQL:

@data =
    EXTRACT
        Timestamp long,
        // skip, skip, skip
        LogDate DateTime,
        LogOrder int
    FROM "abfss://logs@testdlsg2.dfs.core.windows.net/log_{LogDate:yyyy}{LogDate:MM}{LogDate:dd}_{LogOrder}.log.gz"
    USING Extractors.Text(delimiter: ' ', quoting: true, skipFirstNRows: 1);

// the rest is irrelevant

不幸的是,当我将其提交给 ADL 时,作业失败并出现以下错误:

CsEnumerateDirectoryWithPaging 失败,错误为 0x83090A1A(提供的 Url 类型不支持该操作)。Cosmos 路径:abfss://logs@testdlsg2.dfs.core.windows.net/

当使用具有相对路径的本地存储时,查询在本地运行良好。

4

1 回答 1

1

根据评论,U-SQL 不适用于 Azure Data Lake Gen 2,而且不太可能。您应该阅读一个反馈项目:

https://feedback.azure.com/forums/327234-data-lake/suggestions/36445702-add-support-for-adls-gen2-to-adla

在 2020 年,考虑使用 Azure Databricks 启动新的 Azure 分析项目。

于 2020-04-24T17:04:27.660 回答