【发布时间】:2021-10-30 04:25:52
【问题描述】:
我正在使用 Azure Synapse 通过 OPENROWSET 命令 see here 查询大量 CSV 文件。这些文件位于通过托管标识连接到 Azure Synapse 的 Data Lake gen 2 上。
当我一次只查询几个文件时,这工作正常,但是当我增加我试图同时查询的文件数量时,我收到以下错误:
Azure Synapse: Cannot bulk load because the file <file> could not be opened. Operating system error code 12(The access code is invalid.)
这里<file> 每次运行查询时都是一个不同的文件。如果我导航到链接数据视图中的文件,我可以下载并查看该文件。此外,如果我指定对前面提到的文件运行查询,它会正常工作。
我用来查询数据湖的代码如下:
SELECT
Parsed.*
FROM OPENROWSET
(
bulk '2021/*/**.log',
maxerrors = 2147483647,
data_source = 'analytics',
format = 'csv',
fieldterminator ='0x0b',
fieldquote = '0x0b'
) WITH (doc nvarchar(max)) AS Rows
CROSS APPLY OPENJSON(Rows.doc)
WITH
(
col1 NVARCHAR(100),
col2 NVARCHAR(100),
...,
coln NVARCHAR(MAX)
) AS Parsed
这里是数据源,analytics是一个数据源,指定如下:
CREATE EXTERNAL DATA SOURCE analytics
WITH
(
location = 'https://<url>.dfs.core.windows.net/analytics'
)
我尝试为OPENROWSET 中的BULK 的MAXERRORS 参数指定一个较大的数字,因为我不介意在执行此查询时是否只丢失了几个文件,但这似乎只适用于错误的行级别,这些错误在文件级别。
查询正在内置无服务器池上运行。
任何有关如何解决此问题的想法都将不胜感激。
【问题讨论】:
标签: azure azure-synapse azure-data-lake-gen2