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 数据移动服务将不会启动。