我有一种情况,我正在处理一些数据提取代码,环境的设置是这样的:azure blob存储(不是adls)被用作临时存储,并且该代码应该从中创建外部表临时存储中的文件,将从中复制数据到天蓝色的突触分析。现在,blob存储和sql server位于虚拟网络中。现有代码未说明vnet。因此创建外部数据源的语句已修改为
CREATE EXTERNAL DATA SOURCE mydatasrc
WITH ( TYPE = HADOOP, LOCATION = 'abfss://[email protected]',
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时发生错误:调用时引发Java异常HdfsBridge_IsDirExist。 Java异常消息:HdfsBridge :: isDirExist-检查目录是否存在意外错误:AbfsRestOperationException:操作失败:“此请求是无权使用此权限执行此操作。“,403,HEAD
我以为首先我需要以某种方式为sql服务器实例设置身份验证,以便它可以访问vnet内部的blob存储。现在,我在某处读到abfss仅由adls gen2使用,而blob存储仅使用wasbs。是真的吗?
[是,确实是abfss
是用于ADLS Gen2的URI方案,而wasbs
是用于Blob存储的URI方案。它们是不同的,因为在处理文件夹时它们的语义略有不同。
此外,您可能需要确保访问时具有正确的权限。