使用PXF访问Azure, Google Cloud Storage, Minio和S3对象存储
PXF安装了Azure Blob Storage, Azure Data Lake, Google Cloud Storage, Minio和S3对象存储的连接器
先决条件
在使用PXF处理对象存储数据之前,请确保:
- 您已经配置并初始化了PXF,并且PXF正在每台主机上运行。有关其他信息,请参阅配置PXF
 - 您已经配置了计划使用的PXF对象存储连接器。有关说明,请参阅配置Azure、Google云端存储、Minio和S3对象存储的连接器。
 - Greenplum数据库segment主机与外部对象存储系统之间的时间是同步的。
 
连接器、数据格式和配置文件
PXF对象存储连接器提供内置配置文件支持以下数据格式:
- Text
 - Avro
 - JSON
 - Parquet
 - AvroSequenceFile
 - SequenceFile
 
与Azure、Google Cloud Storage、Minio和S3的PXF连接器提供了以下配置文件以读取、写入(在许多情况下)这些受支持的数据格式:
| 数据格式 | Azure Blob Storage | Azure Data Lake | Google Cloud Storage | S3 或 Minio | 
|---|---|---|---|---|
| 分隔的单行纯文本 | wasbs:text | adl:text | gs:text | s3:text | 
| 分隔的带引号的换行符文本 | wasbs:text:multi | adl:text:multi | gs:text:multi | s3:text:multi | 
| Avro | wasbs:avro | adl:avro | gs:avro | s3:avro | 
| JSON | wasbs:json | adl:json | gs:json | s3:json | 
| Parquet | wasbs:parquet | adl:parquet | gs:parquet | s3:parquet | 
| AvroSequenceFile | wasbs:AvroSequenceFile | adl:AvroSequenceFile | gs:AvroSequenceFile | s3:AvroSequenceFile | 
| SequenceFile | wasbs:SequenceFile | adl:SequenceFile | gs:SequenceFile | s3:SequenceFile | 
在 CREATE EXTERNAL TABLE 命令中指定 pxf 协议以创建引用特定对象存储中的文件或目录的Greenplum数据库外部表时,可以提供配置文件名称。
示例CREATE EXTERNAL TABLE命令
以下命令创建了一个引用S3上的文本文件的外部表。指定名为 s3:text 的配置文件和名为 s3srvcfg 的服务配置:
CREATE EXTERNAL TABLE pxf_s3_text(location text, month text, num_orders int, total_sales float8)
  LOCATION ('pxf://S3_BUCKET/pxf_examples/pxf_s3_simple.txt?PROFILE=s3:text&SERVER=s3srvcfg')
FORMAT 'TEXT' (delimiter=E',');
以下命令创建了一个引用Azure Blob Storage上文本文件的外部表。 指定名为 wasbs:text 的配置文件和名为 wasbssrvcfg 的服务配置。 您将提供Azure Blob Storage 容器标识和您的 Azure Blob Storage 账户。
CREATE EXTERNAL TABLE pxf_wasbs_text(location text, month text, num_orders int, total_sales float8)
  LOCATION ('pxf://AZURE_CONTAINER@YOUR_AZURE_BLOB_STORAGE_ACCOUNT_NAME.blob.core.windows.net/path/to/blob/file?PROFILE=wasbs:text&SERVER=wasbssrvcfg')
FORMAT 'TEXT';
以下命令创建了一个引用Azure Data Lake上文本文件的外部表。 指定名为 adl:text 的配置文件和名为 adlsrvcfg 的服务配置。 您将提供您的Azure Data Lake 账户。
CREATE EXTERNAL TABLE pxf_adl_text(location text, month text, num_orders int, total_sales float8)
  LOCATION ('pxf://YOUR_ADL_ACCOUNT_NAME.azuredatalakestore.net/path/to/file?PROFILE=adl:text&SERVER=adlsrvcfg')
FORMAT 'TEXT';
以下命令创建了一个引用Google Cloud Storage上JSON文件的外部表。 指定名为 gs:json 的配置文件和名为 gcssrvcfg 的服务配置:
CREATE EXTERNAL TABLE pxf_gsc_json(location text, month text, num_orders int, total_sales float8)
  LOCATION ('pxf://dir/subdir/file.json?PROFILE=gs:json&SERVER=gcssrvcfg')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');