SQL Polybase 可以从 Azure datalake gen2 读取数据吗?

问题描述

我想设置 polybase 以从 Azure Data Lake Gen2 读取/写入数据。

到目前为止,通过 polybase 将数据写入 Azure 没有问题。

使用的代码

CREATE DATABASE ScopED CREDENTIAL AzureStorageKey
WITH IDENTITY = 'Some_Any_String',Secret = 'theazureKey00102037etcetc';
GO



CREATE EXTERNAL DATA SOURCE AzureStorage 
with (  
      TYPE = HADOOP,LOCATION ='wasbs://mycontainer@mylake.blob.core.windows.net',CREDENTIAL = AzureStorageKey  
);  
GO


CREATE EXTERNAL FILE FORMAT DelimitedFormat WITH (  
      FORMAT_TYPE = DELIMITEDTEXT,FORMAT_OPTIONS (FIELD_TERMINATOR =';',USE_TYPE_DEFAULT = TRUE)); 
GO


CREATE EXTERNAL TABLE [dbo].[TestTable] (  
      [ID]          INT         NOT NULL,[Name]        VARCHAR(10) NOT NULL,[SomeValue]   INT             NULL
)  
WITH (LOCATION='/2021/01/10',DATA_SOURCE = AzureStorage,FILE_FORMAT = DelimitedFormatCom
); 



INSERT INTO [dbo].[TestTable] (ID,Name,SomeValue) 
SELECT 1 as ID,'AAA' as Name,100 as SomeValue
union
SELECT 2 as ID,'BBB' as Name,200 as SomeValue
union
SELECT 3 as ID,'CCC' as Name,300 as SomeValue

插入结果

(3 rows affected)

Completion time: 2021-01-11T22:08:53.0447043+00:00

我可以看到数据湖中的数据

enter image description here

如果我想从上面读取数据

SELECT * FROM [dbo].TestTable

结果是错误

Cannot execute the query "Remote Query" against OLE DB provider "MSOLEDBsql" for Linked Server "(null)". HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: NoSuchMethodError: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer;

我使用的是本地 sql Server 2019 - 开发人员版。

Java 已安装

enter image description here

谢谢。

解决方法

您是否使用具有读写权限的 SAS 创建了访问密钥?

参考https://docs.microsoft.com/en-us/sql/t-sql/statements/create-external-data-source-transact-sql?view=sql-server-ver15&tabs=dedicated#credential--credential_name

,

一旦数据已经存储,尝试创建另一个外部表,它可能会引导您找出问题所在,因为我也这样做了,但没有发现任何问题。另外,您是否安装了 SQL Server 附带的 Java 或不同的 Java?我在此处找到了指示 Java 问题的错误消息:https://github.com/lmdbjava/lmdbjava/issues/116

,

我已经在普通 Windows 10 上安装了 SQL 2019 Dev。 然后最后一切看起来都很好,在基于 Azure Storage Gen2 的外部表中插入/选择数据没有 Java 错误。

我使用了本主题中发布的 SQL 脚本。