通过 PolyBase 引入数据虚拟化

适用于: SQL Server Azure SQL 数据库 Azure Synapse Analytics 并行数据仓库

PolyBase 是 SQL Server 的数据虚拟化功能。

什么是 PolyBase?

借助 PolyBase,SQL Server 实例可以直接从 SQL Server、Oracle、Teradata、MongoDB、Hadoop 群集、Cosmos DB 使用 T-SQL 查询数据,而无需单独安装客户端连接软件。 还可以使用泛型 ODBC 连接器,通过第三方 ODBC 驱动程序连接到其他提供程序。 借助 PolyBase,T-SQL 查询可以将外部源中的数据连接到 SQL Server 实例中的关系表。

“使用 PolyBase 进行数据虚拟化”功能的一个重要用例是允许数据保留其原始位置和格式。 可以通过 SQL Server 实例虚拟化外部数据,以便可以对这些数据进行查询,如同 SQL Server 中的任何其他表一样。 此过程可以最大限度地减少对数据移动的 ETL 进程的需求。 此数据虚拟化方案可通过使用 PolyBase 连接器来实现。

备注

PolyBase 功能的某些功能是 Azure SQL 托管实例的个人预览版,其中包括在 Azure Data Lake Storage (ADLS) Gen2 中查询外部数据(Parquet 文件)的功能。 个人预览版包括对用于测试的客户端库和文档的访问权限,这些资源尚未公开提供。 如果你对此感兴趣,并且可以花费一些时间来尝试功能并共享你的反馈和问题,请查看 Azure SQL 托管实例 PolyBase 个人预览版指南

支持的 SQL 产品和服务

PolyBase 对以下 Microsoft SQL 产品提供这些相同功能:

  • SQL Server 2016 (13.x) 及更高版本(仅限 Windows)
  • SQL Server 2019 (15.x) 及更高版本 (Linux)
  • SQL Server Analytics Platform System (PDW) (PDW),托管在 Analytics Platform System (APS) 中
  • Azure Synapse Analytics

PolyBase 连接器

PolyBase 功能提供与以下外部数据源的连接:

外部数据源 具有 PolyBase 的 SQL Server APS PDW Azure Synapse Analytics
Oracle、MongoDB、Teradata 读取
泛型 ODBC 读取(仅限 Windows)
Azure 存储 读取/写入 读取/写入 读取/写入
Hadoop 读取/写入 读取/写入
SQL Server 读取
  • SQL Server 2016 (13.x) 引入了 PolyBase,支持连接到 Hadoop 和 Azure Blob 存储。
  • SQL Server 2019 (15.x) 引入了其他连接器,包括 SQL Server、Oracle、Teradata 和 MongoDB。

外部连接器的示例包括:

* PolyBase 支持两个 Hadoop 提供程序:Hortonworks 数据平台 (HDP) 和 Cloudera 分布式 Hadoop (CDH)。

若要在 SQL Server 实例中使用 PolyBase,请执行以下操作:

  1. 在 Windows 上安装 PolyBase在 Linux 上安装 PolyBase
  2. 从 SQL Server 2019 (15.x) 开始,在 sp_configure中启用 PolyBase(如有必要)。
  3. 创建外部数据源
  4. 创建外部表

Azure 集成

借助 PolyBase 的基础帮助,T-SQL 查询还可以将数据导入和导出 Azure Blob 存储。 此外,借助 PolyBase,Azure Synapse Analytics 还可以将数据导入和导出 Azure Data Lake Store 和 Azure Blob 存储。

为什么要用 PolyBase?

PolyBase 允许你将来自 SQL Server 实例的数据与外部数据连接起来。 在 PolyBase 将数据连接到外部数据源之前,你可以:

  • 传输一半数据,这样所有数据都在一个位置。
  • 查询两个数据源,然后编写自定义查询逻辑,以在客户端一级联接和集成数据。

PolyBase 允许你简单地使用 Transact-SQL 来联接数据。

PolyBase 不要求向 Hadoop 环境安装其他软件。 查询外部数据所用的 T-SQL 语法也是用于查询数据库表的语法。 PolyBase 实现的所有支持操作全都以透明方式发生。 查询作者无需对外部源有任何了解。

PolyBase 用法

PolyBase 支持在 SQL Server 中使用以下方案:

  • 通过 SQL Server 实例或 PDW 查询 Hadoop 中存储的数据。 用户将数据存储在经济高效的分布式、可扩展系统中,例如 Hadoop。 PolyBase 使得使用 T-SQL 查询数据更加容易。

  • 查询 Azure Blob 存储中存储的数据。 Azure blob 存储是一个方便存储供 Azure 服务使用的数据的位置。 PolyBase 使得使用 T-SQL 访问数据变得更加容易。

  • 导入 Hadoop、Azure Blob 存储或 Azure Data Lake Store 中的数据。 通过将 Hadoop、Azure Blob 存储或 Azure Data Lake Store 中的数据导入到关系表中,利用 Microsoft SQL 的列存储技术和分析功能的速度优势。 不需要单独的 ETL 或导入工具。

  • 将数据导出到 Hadoop、Azure Blob 存储或 Azure Data Lake Store。 将数据存档到 Hadoop、Azure Blob 存储或 Azure Data Lake Store,以获得经济高效的存储,并使数据保持联机以便于访问。

  • 与 BI 工具集成 结合使用 PolyBase 和 Microsoft 的商业智能和分析堆栈,或使用任何与 SQL Server 兼容的第三方工具。

性能

  • 将计算推送到 Hadoop。 PolyBase 将一些计算推送到外部源,以优化总体查询。 查询优化器制定基于成本的决策,以在执行此操作将提升查询性能时将计算推送到 Hadoop。 查询优化器使用外部表上的统计来制定基于成本的决策。 推送计算会创建 MapReduce 作业并利用 Hadoop 的分布计算资源。 有关详细信息,请参阅 PolyBase 中的下推计算

  • 缩放计算资源。 若要提高查询性能,可以使用 SQL Server PolyBase 横向扩展组。 这使并行数据可以在 SQL Server 实例和 Hadoop 节点之间传输,并为处理外部数据添加计算资源。

后续步骤

在使用 PolyBase 之前,必须在 Windows 上安装 PolyBase在 Linux 上安装 PolyBase,并在必要时在 sp_configure 中启用 PolyBase。 然后,请参阅以下配置指南,具体取决于你的数据源: