从U-SQL引用ADL存储gen2文件

时间:2020-04-24 06:23:18

标签: azure azure-data-lake u-sql azure-data-lake-gen2

我有一个ADL帐户,该帐户设置了两个存储:默认的常规ADLS gen1存储和启用了“分层命名空间”的Blob存储(如果有关系,则使用存储密钥将其连接到ADLS)(在此没有托管身份)这点)。第一个与该问题无关,只是,为了这个问题,第二个以名称testdlsg2注册。我在Azure门户的数据浏览器中都看到了这两者。

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

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

我已经阅读了ADLS Gen2 URI documentation,并提出了以下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(提供的网址类型不支持该操作)。宇宙路径:abfss://logs@testdlsg2.dfs.core.windows.net/

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

1 个答案:

答案 0 :(得分: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分析项目。