Greenplum Platform Extension Framework(PXF)提供的连接器(connectors)可以用于访问存储在Greenplum数据库外部源中的数据。这些连接器将外部数据源映射到Greenplum数据库的外部表(external table)中。创建Greenplum数据库外部表时,你可以通过在命令中提供服务器名称和配置文件名称来标识外部数据存储和数据格式。

您可以通过Greenplum数据库查询外部表引用的数据,您也可以使用外部表将数据加载到Greenplum数据库中以获得更高的性能。

架构概述

GPDB集群包含一个master节点(master node)和多个segment主机(segment host)。GPDB segment主机上的PXF客户端进程为对外部表进行查询的每个segment instance分配工作线程。多个segment主机的PXF代理与外部数据存储并行通信。

连接器(Connector),服务器(Servers)和配置文件(Profiles)

连接器是一个通用的术语,他封装了读取和写入外部数据存储所需要的实现细节。PXF提供创建了与Hadoop (HDFS,Hive,Hbase),对象存储(Azure,Google Cloud Storage, Minio, S3)和sql数据库(通过jdbc)的连接器。

PXF服务器是连接器的命名配置。服务器定义提供PXF访问外部数据源所需的信息。此配置信息是特定于数据存储的,并且可以包括服务器位置,访问凭据和其他相关属性。

Greenplum数据库管理员将为每个允许Greenplum数据库用户访问的外部数据存储配置至少一个服务器定义,并在适当时发布可用的服务器名称。

默认的PXF服务是default(保留),在没有配置SERVER=时提供外部数据源的位置和访问信息。 创建外部表时,可以指定SERVER=<server_name>设置,以标识从中获取配置的服务器配置和访问外部数据存储的凭据。

GPDB数据库管理员将为每个允许GPDB用户访问的外部数据存储配置至少一个服务定义,并将根据需求发布可用的服务名。 默认的PXF服务器名为default(保留),在配置后,如果没有SERVER=<server_name>设置,则将提供外部数据源的位置和访问信息。

最后,PXF配置文件是一个命名映射,用于标识特定外部数据存储支持的特定数据格式或协议。PXF支持text,Avro,JSON,RCFile,Parquet,SequenceFile和ORC数据格式以及JDBC协议,并提供了一些内置配置文件,如以下部分所述。

创建一个外部表

PXF实现了一个叫做pxf的GPDB协议,你可以使用这个协议去创建一个外部表。指定pxf协议的CREATE EXTERNAL TABLE命令语法如下:

  1. CREATE [WRITABLE] EXTERNAL TABLE <table_name>
  2. ( <column_name> <data_type> [, ...] | LIKE <other_table> )
  3. LOCATION('pxf://<path-to-data>?PROFILE=<profile_name>[&SERVER=<server_name>][&<custom-option>=<value>[...]]')
  4. FORMAT '[TEXT|CSV|CUSTOM]' (<formatting-properties>);

在创建语句CREATE EXTERNAL TABLE中的LOCATION子句是一个URI。这个URI标识描述外部数据位置的路径和其他信息。例如:如果外部数据存储的是HDFS,则填写指定HDFS文件的绝对路径。如果外部数据存储的是HIVE,则需要指定符合模式的HIVE表名称。

使用问号(?)引入的URI的查询部分来标识PXF服务器和配置文件名称。

PXF可能需要额外的信息来读取和写入某些数据格式,可以使用LOCATION字符串的可选组件 = 来提供配置文件的信息,并通过字符串的组件提供格式信息。

Table 1. CREATE EXTERNAL TABLE参数值和描述

KeywordValue and Description
<path‑to‑data>目录,文件名,通配符模式,表名等。的语法取决于外部数据源
PROFILE=<profile_name>PXF用于访问数据的配置文件。 PXF支持Hadoop services, object stores, and other SQL databases.
SERVER=<server_name>PXF用于访问数据的命名服务器配置。可选的; 如果未指定,PXF将使用default服务器。
<custom‑option>=<value>配置文件或服务器支持的其他选项及其值 
FORMAT <value>PXF支持TEXT,CSVCUSTOM格式
<formatting‑properties>格式化配置文件支持的属性; 例如, FORMATTERdelimiter

Note: 创建PXF外部表时,不能在格式化程序规范中使用HEADER选项

PXF的其他特性

某些PXF连接器和配置文件支持谓词下推和列投影。 有关此支持的详细信息,请参阅以下主题: - About PXF Filter Pushdown - About Column Projection in PXF