我有一种情况,我正在处理一些数据摄取代码,其中环境设置如下:azure blob storage (not adls) 被用作临时存储,并且代码应该从文件创建一个外部表在临时存储中,数据将从那里复制到 azure synapse analytics。现在,blob 存储和 sql server 在虚拟网络中。现有代码没有考虑 vnet。所以创建外部数据源的语句已经修改为
CREATE EXTERNAL DATA SOURCE mydatasrc
WITH ( TYPE = HADOOP, LOCATION = 'abfss://mystoragecontainer@storageaccount.dfs.core.windows.net',
CREDENTIAL = myMsiCred);
来自以前的 wasbs uri,并使用托管服务标识。
外部表语句为:
CREATE EXTERNAL TABLE myschema.myExternalTable (
<columns list>
) WITH (
LOCATION = '/path/to/folder',
DATA_SOURCE = mydatasrc,
FILE_FORMAT = myFormat,
REJECT_TYPE = VALUE,
REJECT_VALUE = 0 );
起初我得到一个“请在此服务器上启用托管服务标识”,这需要很长时间才能修复,最后使用了 azure powershell 命令。现在它是一个
访问 HDFS 时出错:调用 HdfsBridge_IsDirExist 时引发 Java 异常。Java 异常消息:HdfsBridge::isDirExist - 检查目录是否存在时遇到意外错误:AbfsRestOperationException:操作失败:“此请求无权使用此权限执行此操作。”,403,HEAD
起初我以为我需要为 sql server 实例设置身份验证,以便它可以访问 vnet 内的 blob 存储。现在我在某处读到 abfss 仅由 adls gen2 使用,而 blob 存储专门使用 wasbs。真的吗?