PolyBase 功能和限制

适用于:SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库 Azure Synapse Analytics Analytics Platform System (PDW)

本文是可用于 SQL Server 产品和服务的 PolyBase 功能摘要。

产品发布的功能摘要

此表列出了 PolyBase 的主要功能以及提供这些功能的产品。

功能 SQL Server(从 2016 开始) Azure SQL 数据库 Azure Synapse Analytics Parallel Data Warehouse
使用 Transact-SQL 查询 Hadoop 数据 No
从 Hadoop 导入数据 No
导出数据到 Hadoop No
查询、导入自、导出至 Azure HDInsight No No
将查询计算下推到 Hadoop No
从 Azure Blob 存储导入数据 1
导出数据到 Azure Blob 存储 No
从 Azure Data Lake Store 导入数据 No
将数据导出到 Azure Data Lake Store No
从 Microsoft BI 工具运行 PolyBase 查询 No

1 在 SQL Server 2017 (14.x) 中引入,请参阅批量访问 Azure Blob 存储中数据的示例

已知限制

PolyBase 具有以下限制:

  • 在 SQL Server 2019 (15.x) 之前,在 SQL Server 中最大行大小(包括可变长度列的全长)不能超过 32 KB,在 Azure Synapse Analytics 中不能超过 1 MB。 在 SQL Server 2019 (15.x) 及更高版本中已取消此限制。 Hadoop 数据源的限制仍为 1 MB,但仅受其他数据源的最大 SQL Server 限制所限制。

  • 从 SQL Server 或 Azure Synapse Analytics 中以 ORC 文件格式导出数据时,包含大量问文本的列可能会受到限制。 由于 Java 内存不足的错误消息,可将它们限制为最少 50 列。 若要解决此问题,请仅导出列的一个子集。

  • 如果已启用 Knox,则 PolyBase 无法连接到任何 Hadoop 实例。

  • 如果使用事务为 true 的 Hive 表,PolyBase 将无法访问 Hive 表目录中的数据。

  • PolyBase 服务要求 SQL Server 服务启用 TCP/IP 网络协议,这样才能正常工作。 此外,如果将 TCP/IP 协议配置设置“全部侦听”设置为“否”,则在 TCP/IP 属性中“IPAll”下的“TCP 动态端口”或“TCP 端口”中,仍必须有用于正确侦听器端口的条目。 鉴于 PolyBase 服务解析 SQL Server 引擎的侦听器端口的方式,此条目是必需的。

  • 如果在内核中禁用了 IPv6,则 Linux 上的 SQL Server 上的 PolyBase 不起作用。 有关详细信息,请参阅 Linux 上的 SQL Server:已知问题

  • PolyBase 服务需要启用共享内存协议,才能正常工作。

  • 如果有一个默认 SQL Server 实例配置为侦听 1433 以外的 TCP 端口,则不能将其用作 PolyBase 横向扩展组中的头节点。 执行 sp_polybase_join_group 时,如果将“MSSQLSERVER”作为实例名称传递,SQL Server 将假设端口 1433 是侦听器端口,因此数据移动服务将无法在启动时连接到头节点。

  • 不支持将 Oracle 同义词用于 PolyBase。

  • Hadoop 外部数据源不支持 UTF-8 排序规则。

  • SQL Server 2022 (16.x) 及更高版本不再支持 Hadoop。

  • AlwaysOn 可用性组不支持 PolyBase 横向扩展组。