在 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 Contributor 或 Storage 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 中的数据进行实时数据分析