Azure Synapse 分析:访问外部表时出错
Posted
技术标签:
【中文标题】Azure Synapse 分析:访问外部表时出错【英文标题】:Azure Synapse Analysis: Error while accessing the external table 【发布时间】:2020-09-07 17:44:15 【问题描述】:无法执行查询。错误:文件“https://track2gen2storage.blob.core.windows.net/\sourcedata\sample.csv”无法打开,因为它不存在或被另一个进程使用。
我们执行了以下步骤:-
create database SalesdataDemo
use salesdataDemo
-----create master key
CREATE MASTER KEY ENCRYPTION BY PASSWORD = <Password>;
SELECT *
FROM sys.symmetric_keys AS SK
WHERE SK.name = '##MS_DatabaseMasterKey##';
CREATE DATABASE SCOPED CREDENTIAL ADL_User
WITH
IDENTITY = '<client_id>@<OAuth_2.0_Token_EndPoint>',Secret = <Key>
CREATE DATABASE SCOPED CREDENTIAL adls_credential
WITH IDENTITY ='SHARED ACCESS SIGNATURE',
SECRET = <azure_storage_account_key>
CREATE EXTERNAL DATA SOURCE adlsdatasource
WITH
( LOCATION = 'https://track2gen2storage.blob.core.windows.net',
CREDENTIAL = adls_credential
) ;
CREATE EXTERNAL FILE FORMAT adls_csv
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS ( FIELD_TERMINATOR = ',', STRING_DELIMITER = '"', FIRST_ROW = 2 )
);
CREATE EXTERNAL TABLE sampledata ( <ColumnName><Datatype>)
WITH (
LOCATION = '/sourcedata/sample.csv',
DATA_SOURCE = adlsdatasource,
FILE_FORMAT = adls_csv
)
select * from sampledata
【问题讨论】:
我认为您的数据源位置必须是 wasbs,而不是 https。 wasbs 用于 Blob 存储,abfss 用于 ADLS Gen 2。 @JoelCochran 你可以使用 https - docs.microsoft.com/en-us/azure/synapse-analytics/sql/… argument 'unstructured_data_path' 【参考方案1】:我认为问题在于您的外部表位置以 / 开头。尝试将其更改为:
CREATE EXTERNAL TABLE sampledata ( <ColumnName><Datatype>)
WITH (
LOCATION = 'sourcedata/sample.csv',
DATA_SOURCE = adlsdatasource,
FILE_FORMAT = adls_csv
)
这里是文档,你也可以看看参考: https://docs.microsoft.com/en-us/azure/synapse-analytics/sql/create-use-external-tables
还有一个问题,为什么需要名为 ADL_User 的数据库范围凭据?
【讨论】:
以上是关于Azure Synapse 分析:访问外部表时出错的主要内容,如果未能解决你的问题,请参考以下文章
通过 Synapse Pipelines 执行 Azure Synapse Notebook 时访问 Key Vault 时出错
将数据从 ADLS Gen2 加载到 Azure Synapse 时出错
SQL Synapse,在 CREATE EXTERNAL TABLE 中使用动态/参数化 Azure 容器