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 数据 | 是 | 否 | 否 | 是 |
从 Hadoop 导入数据 | 是 | 否 | 否 | 是 |
导出数据到 Hadoop | 是 | 否 | 否 | 是 |
查询、导入自、导出至 Azure HDInsight | 否 | 否 | 否 | 否 |
将查询计算下推到 Hadoop | 是 | 否 | 否 | 是 |
从 Azure Blob 存储导入数据 | 是 | 是 1 | 是 | 是 |
导出数据到 Azure Blob 存储 | 是 | 否 | 是 | 是 |
从 Azure Data Lake Store 导入数据 | 否 | 否 | 是 | 否 |
将数据导出到 Azure Data Lake Store | 否 | 否 | 是 | 否 |
从 Microsoft BI 工具运行 PolyBase 查询 | 是 | 否 | 是 | 是 |
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 引擎的侦听器端口的方式,此条目是必需的。
- 在 TCP/IP 属性 > IP 地址中启用所需的 IP 地址;否则,SQL Server 引擎将不接受任何 TCP/IP 连接,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 横向扩展组。
服务器名称长度受 15 个字符的 NetBIOS 名称长度限制的约束。 如果在创建服务器后将其名称更改为 16 个字符或更长,PolyBase 数据移动服务将不会启动。