使用 Polybase 在 SQL Server 2016 中创建外部表的问题
Posted
技术标签:
【中文标题】使用 Polybase 在 SQL Server 2016 中创建外部表的问题【英文标题】:Problem with creating external tables in SQL Server 2016 using Polybase 【发布时间】:2022-01-02 02:03:49 【问题描述】:创建外部表时显示错误。谁能告诉我 core-site.xml 或其他文件中的 Hadoop 设置是否有问题?端口 9000 对于 SQL Server 端的设置是否正确,还是应该使用另一个?
一般架构概述:
-
SQL Server 和 Hadoop 在其他 Windows 服务器上运行。
Ping 检查后,两台服务器可以互相看到。
在 SQL Server 中,TCP 传输设置正确,防火墙设置正确。
错误
消息 105036,第 16 级,状态 1,第 33 行 由于内部错误引发了“JNI.JavaExceptionCheckException”类型的异常,无法检索外部数据源信息。:错误 [Call From xxxxxxxxxxxx/00.000.000.000 to xxxxxx.xx.dev.net:9000 failed on connection exception: java .net.ConnectException:连接被拒绝:没有更多信息;有关详细信息,请参阅:>http://wiki.apache.org/hadoop/ConnectionRefused] 在访问外部文件时发生..
Hadoop core-site.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.security.authorization</name>
<value>false</value>
</property>
</configuration>
SQL Server 中外部源的设置。
CREATE EXTERNAL DATA SOURCE MyHadoop
WITH
( LOCATION = 'hdfs://00.000.000.000:9000'
,RESOURCE_MANAGER_LOCATION = '00.000.000.000:9000'
,TYPE = HADOOP
) ;
SQL Server 中的文件格式。
CREATE EXTERNAL FILE FORMAT csvformat
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (FIELD_TERMINATOR =';')
);
SQL Server 中的外部表(运行此代码后出现错误)
CREATE EXTERNAL TABLE [EX_SQLPolybase]
(
id [int],
[Name] varchar(50)
)
WITH
(
DATA_SOURCE = [MyHadoop]
,LOCATION = N'[Test].dbo.Test_tbl'
,FILE_FORMAT = csvformat
)
【问题讨论】:
【参考方案1】:你需要从头开始,有很多东西需要修改:
-
检查 Hadoop 的 Polybase 配置和安全性:https://docs.microsoft.com/en-us/sql/relational-databases/polybase/polybase-configuration
确保通信没有阻塞,可以使用powercat如下:powercat -c 00.000.000.000 -p 8020 -t 1 -Verbose -d
您是否配置了“hadoop 连接”服务器参数?
修改 HDFS 相关文件后是否重启过 SQL Server 服务?
您是否在 SQL Server 中创建了主密钥加密?
您是否尝试过在不指定资源管理器位置的情况下创建外部数据源?
外部表规范错误,LOCATION 是 HDFS 中的 Unix 路径,类似于:LOCATION='/user/pdw_user/input'
您是否在 Linux 中创建了可以访问“位置”路径的用户“pdw_user”?
详细解释和附加信息可以在这里找到:https://bpbonline.com/products/hands-on-data-virtualization-with-polybase
【讨论】:
以上是关于使用 Polybase 在 SQL Server 2016 中创建外部表的问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Azure SQL Server 上安装和配置 Polybase - 找不到存储过程“sp_configure”
SQL Server 2019 中 Polybase 外部表的行级安全性可能吗?
SQL Server 2016 使用 sql 用户通过 azure blob 存储上的 polybase 访问外部表 - 访问被拒绝,因为没有登录映射
Polybase 外部表与 OPENROWSET 无服务器 sql 池架构