PolyBase 中的常见问题解答

适用于:SQL Server 2016 (13.x) 及更高版本

PolyBase 与链接服务器

下表主要说明了 PolyBase 和 链接服务器之间的功能差异:

PolyBase 链接服务器
数据库范围的对象 实例范围的对象
使用 ODBC 驱动程序 使用 OLEDB 提供程序
支持对所有数据源执行只读操作,并写入某些外部数据源 支持读写操作
可横向扩展来自单个连接的远程数据源查询 无法横向扩展来自单个连接的远程数据源查询
支持谓词下推 支持谓词下推
可用性组不需要单独配置 可用性组中的每个实例均需要单独配置
仅基本身份验证 基本身份验证和集成身份验证
适用于处理大量行的分析查询 适用于返回单行或少量行的 OLTP 查询
使用外部表的查询不能参与分布式事务 分布式查询可以参与分布式事务

SQL Server 2022 中的 PolyBase 有哪些新增功能?

SQL Server 2022 (16.x) 现在支持使用 S3 REST API 在本地或云中存储在 Azure 存储帐户 v2、Azure Data Lake Storage Gen2 或任何与 S3 兼容的对象存储上的 CSV、Parquet 和 Delta 文件。

SQL Server 2022 (16.x) 现在可以将 CREATE EXTERNAL TABLE 用作 SELECT (CETAS),以及 OPENROWSET、CREATE EXTERNAL TABLE (CET) 等命令以及所有新的 T-SQL 增强功能。

目前,SQL Server 2022 (16.x) 中删除了对 Hadoop 外部数据源的支持。

SQL Server 2022 (16.x) 累积更新 2 现在引入了对 Oracle TNS 文件的支持。 有关详细信息和示例,请参阅创建外部数据源

阅读有关使用 PolyBase for SQL Server 2022 进行数据虚拟化的详细信息,并查看 SQL Server 2022 PolyBase 增强功能

SQL Server 2019 中的 PolyBase 有哪些新增功能?

在 SQL Server 2019 (15.x) 中,PolyBase 现在可以从更多种类的数据源读取数据。 这些外部数据源中的数据可作为外部表存储在 SQL Server 上。 PolyBase 还支持对这些外部数据源进行下推计算(不包括 ODBC 泛型类型)。

兼容的数据源

  • SQL Server
  • Oracle
  • Teradata
  • MongoDB
  • 兼容的 ODBC 泛型类型

SQL Server 2019 (15.x) 累积更新 19 现在引入了对 Oracle TNS 文件的支持。 有关详细信息和示例,请参阅创建外部数据源

注意

PolyBase 允许使用第三方 ODBC 驱动程序连接到外部数据源。 这些驱动程序不随 PolyBase 一起提供,可能不会按预期工作。 有关详细信息,请参阅配置 PolyBase 以使用 ODBC 泛型类型访问外部数据

可以指定哪些 CONNECTION_OPTIONS 来连接到第三方数据源?

查看 CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS,了解 SQL Server、Oracle、Teradata、MongoDB API for Cosmos DB 和泛型 ODBC 数据提供程序支持的数据提供程序连接选项。

如何查看 PolyBase 下推计算的远程查询执行计划?

可通过几种方法来实现,具体取决于 SQL Server 的版本。 请参阅 PolyBase 故障排除 - 查看 PolyBase 查询计划

如何判断是否正在进行 PolyBase 下推计算?

Azure SQL 数据库是否支持 Polybase?

否,但你可以使用 OPENROWSET 函数查询放置在 Azure Blob 存储上的文件中的数据,或使用 CREATE EXTERNAL TABLE 从 Synapse Analytics 中的无服务器 SQL 池读取数据。 有关详细信息,请参阅 Azure SQL 可以使用 Synapse SQL 外部表读取 Azure Data Lake 存储文件

Azure SQL 托管实例是否支持 PolyBase?

Azure SQL 托管实例具有自己的数据虚拟化功能,可将 Azure Data Lake Storage (ADLS) 和 Azure Blob 存储作为数据源。 有关详细信息,请参阅 Azure SQL 托管实例的数据虚拟化

对于 PolyBase,我应该允许哪些端口通过防火墙?

除非是 PolyBase 横向扩展组,否则不需要针对 PolyBase 本身打开其他端口。 如果没有横向扩展组,仅 PolyBase 服务则不需要任何防火墙规则。

在 Windows 服务器上,PolyBase 将利用 SQL Server 配置管理器中 TCP/IP 设置的“IPAll”部分中 SQL Server 使用的端口。 有关详细信息,请参阅 TCP/IP 属性。 在 Linux 服务器上,PolyBase “network.tcpport”设置。 有关详细信息,请参阅 TCP 端口

对于多台 Windows 服务器上的 PolyBase 横向扩展组,请参阅下一个问题中的端口信息。

但必须允许其他端口与 PolyBase 使用的各种外部数据源进行通信。 请参阅 ODBC 配置、Azure 资源配置或特定数据源文档。 例如:

源平台 参考
Microsoft SQL Server SQL Server 使用的端口
Hortonworks HDP 管理 HDFS
Cloudera CDH CDH 组件使用的端口

PolyBase 横向扩展组使用哪些端口?

默认情况下,PolyBase 数据移动服务通过 TCP 16450-16460 的一系列端口(通常使用 16450-16453 和端口 17001)连接到横向扩展组的头节点。 这些端口仅在配置了 PolyBase 横向扩展组时使用,并且应被允许通过服务器防火墙。 SQL Server 安装程序应自动创建一个本地防火墙规则,允许在功能安装时使用这些端口。 有关详细信息,请参阅在 Windows 上配置 PolyBase 横向扩展组

注意

Microsoft SQL Server PolyBase 横向扩展组即将停用。 横向扩展组功能将从 SQL Server 2022 (16.x) 的产品中移除。

大数据群集中的 PolyBase 与独立实例中的 PolyBase

有关使用 ODBC 泛型连接器进行连接的详细信息,请访问配置 ODBC 泛型类型的操作指南

下表重点介绍了 SQL Server 2019 (15.x) 独立安装和 SQL Server 2019 (15.x) 大数据群集中提供的 PolyBase 功能:

功能 大数据群集 独立实例
为 SQL Server、Oracle、Teradata 和 Mongo DB 创建外部数据源 X X
使用可兼容的第三方 ODBC 驱动程序创建外部数据源 X
为 HADOOP 数据源创建外部数据源 X X
为 Azure Blob 存储创建外部数据源 X X
在 SQL Server 数据池上创建外部表 X
在 SQL Server 存储池上创建外部表 X
执行横向扩展查询 X X(仅限 Windows)

重要

Microsoft SQL Server 2019 大数据群集附加产品将停用。 对 SQL Server 2019 大数据群集的支持将于 2025 年 2 月 28 日结束。 具有软件保障的 SQL Server 2019 的所有现有用户都将在平台上获得完全支持,在此之前,该软件将继续通过 SQL Server 累积更新进行维护。 有关详细信息,请参阅公告博客文章Microsoft SQL Server 平台上的大数据选项