从 U-SQL 引用 ADL 存储 gen2 文件
Referencing ADL storage gen2 files from U-SQL
我有一个 ADL 帐户设置了两个存储:设置为默认的常规 ADLS gen1 存储和一个启用了 "Hierarchical namespace" 的 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 failed with error 0x83090A1A (The operation is not supported on the provided Url type). Cosmos Path: abfss://logs@testdlsg2.dfs.core.windows.net/
当使用具有相对路径的本地存储时,查询在本地工作正常。
根据评论,U-SQL 不适用于 Azure Data Lake Gen 2,而且不太可能永远适用。有一个您应该阅读的反馈项目:
在 2020 年,考虑使用 Azure Databricks 启动新的 Azure 分析项目。
我有一个 ADL 帐户设置了两个存储:设置为默认的常规 ADLS gen1 存储和一个启用了 "Hierarchical namespace" 的 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 failed with error 0x83090A1A (The operation is not supported on the provided Url type). Cosmos Path: abfss://logs@testdlsg2.dfs.core.windows.net/
当使用具有相对路径的本地存储时,查询在本地工作正常。
根据评论,U-SQL 不适用于 Azure Data Lake Gen 2,而且不太可能永远适用。有一个您应该阅读的反馈项目:
在 2020 年,考虑使用 Azure Databricks 启动新的 Azure 分析项目。