在 Azure Data Lake Storage Gen2 中的 CSV 文件上使用无服务器 sql 池(内置)运行查询失败

Posted

技术标签:

【中文标题】在 Azure Data Lake Storage Gen2 中的 CSV 文件上使用无服务器 sql 池(内置)运行查询失败【英文标题】:Running query using serverless sql pool (built-in) on CSV file in Azure Data Lake Storage Gen2 failed 【发布时间】:2021-04-25 02:34:02 【问题描述】:

我使用 Azure Synapse portal 将我的 CSV 文件上传到我的 Azure Data Lake Storage Gen2。然后我试了select Top 100 rows,运行自动生成的SQL后报错。自动生成的SQL:

SELECT
    TOP 100 *
FROM
    OPENROWSET(
        BULK 'https://accountname.dfs.core.windows.net/filesystemname/test_file/contract.csv',
        FORMAT = 'CSV',
        PARSER_VERSION='2.0'
    ) AS [result]

错误:

File 'https://accountname.dfs.core.windows.net/filesystemname/test_file/contract.csv'
cannot be opened because it does not exist or it is used by another process. 

【问题讨论】:

【参考方案1】:

我刚刚获取了你的代码并更新了我所拥有的路径,它运行良好

SELECT
    TOP 100 *
FROM
    OPENROWSET(
        BULK 'https://XXX.dfs.core.windows.net/himanshu/NYCTaxi/PassengerCountStats.csv',
        FORMAT = 'CSV',
        PARSER_VERSION='2.0'
    ) AS [result]

请检查您上传文件的路径与脚本中使用的路径是否相同。 你可以这样做来检查 导航到 WS -> 数据 -> ADLS gen2 -> 转到文件 -> 右键单击​​转到属性并从那里复制 Uri 并粘贴到脚本中。

【讨论】:

它适用于像 NYCTaxi 数据集这样的公共数据。不使用我们链接的数据湖中的私人数据。【参考方案2】:

Synapse Studio 中的此错误在其下方有 link(导致自助文档),它解释了错误本身。

您是否拥有存储帐户所需的权限?

您必须拥有 Storage Blob Data ContributorStorage Blob Data Reader 才能使此查询起作用。

文档摘要:

您需要具有存储 Blob 数据所有者/参与者/读者角色才能 使用您的身份访问数据。即使你是一个所有者 存储帐户,您仍然需要将自己添加到其中之一 存储 Blob 数据角色。

查看Control Storage account access for serverless SQL pool的完整文档


如果您的存储帐户受到防火墙规则的保护,请查看此stack overflow answer。

参考full docs article。

【讨论】:

以上是关于在 Azure Data Lake Storage Gen2 中的 CSV 文件上使用无服务器 sql 池(内置)运行查询失败的主要内容,如果未能解决你的问题,请参考以下文章

使用Azure Functions中的NodeJS将文件保存到Azure Data Lake Storage的任何示例?

Azure Data Lake Storage Gen2 REST API - 列出文件系统 - “代码”:“AuthorizationPermissionMismatch

构建企业级数据湖?Azure Data Lake Storage Gen2不容错过(上)

Azure Databricks - 从 Gen2 Data Lake Storage 运行 Spark Jar

在 Azure Data Lake Storage Gen2 中的 CSV 文件上使用无服务器 sql 池(内置)运行查询失败

使用 Elastic Stack 对 Azure Data Lake Storage Gen2 中的数据进行实时数据分析