Polybase到Azure Data Lake Gen 2失败

问题描述 投票:1回答:1

我正在尝试通过Polybase将Azure SQLDW连接到Data Lake Gen 2中的Parquet文件。这是我的代码:

CREATE DATABASE SCOPED CREDENTIAL DSC_ServicePrincipal
    WITH IDENTITY = '1234567890@https://login.microsoftonline.com/1234567890/oauth2/token',
    SECRET = '1234567890'
GO

CREATE EXTERNAL DATA SOURCE [DS_ADLS] WITH (TYPE = HADOOP, 
        LOCATION = N'abfss://[email protected]', 
        CREDENTIAL = DSC_ServicePrincipal)
GO

CREATE EXTERNAL FILE FORMAT [ParquetFileFormatSnappy] 
WITH (FORMAT_TYPE = PARQUET, DATA_COMPRESSION = N'org.apache.hadoop.io.compress.SnappyCodec')
GO

CREATE EXTERNAL TABLE [dbo].[DimDate]
  (
        [DateSKey]        int   not null,
      [Date]              date  not null,
      [Year]              int   not null,
      [Month]             int   not null,
      [Day]             int not null,
      [WeekOfYear]      int not null,
      [MonthNameShort]  varchar(50) not null,
      [MonthName]         varchar(50)   not null,
      [DayNameShort]      varchar(50)   not null,
      [DayName]         varchar(50) not null
  )
  WITH (DATA_SOURCE = [DS_ADLS],LOCATION = N'/PRESENTED/dimDate',FILE_FORMAT = [ParquetFileFormatSnappy],REJECT_TYPE = VALUE,REJECT_VALUE = 0)

create external table无法执行,并返回以下错误:

访问HDFS时发生错误:在调用HdfsBridge_IsDirExist时引发Java异常。 Java异常消息:HdfsBridge :: isDirExist - 检查是否存在directoy时遇到意外错误:AbfsRestOperationException:HEAD https://xxxx.dfs.core.windows.net/xxxx?resource=filesystem&timeout=90 StatusCode = 403 StatusDescription =服务器无法验证请求。确保正确形成Authorization标头的值,包括签名。 ErrorCode = ErrorMessage =

该目录确实存在,我的服务主体可以访问。我已经通过使用Databricks的相同服务主体并正确读取文件来确认这一点。

我迷失了我做错了什么。

azure-storage-blobs azure-data-lake azure-sqldw polybase
1个回答
1
投票

问题是abfs / abfss目前不支持用户提供的oauth凭据。

支持的身份验证方法是:

  • 存储帐户密钥
  • 基于MSI的身份验证
© www.soinside.com 2019 - 2024. All rights reserved.