在对象存储中读写SequenceFile数据
PXF 对象存储连接器支持SequenceFile格式二进制数据。 本节描述如何使用PXF读写SequenceFile数据,包括如何创建、写入以及查询引用对象存储文件的外部表。
注意: 从对象存储访问SequenceFile格式数据与访问HDFS中的SequenceFile格式数据非常相似。 本主题标识了读取对象存储所需的特定信息,并在通用信息的位置链接到PXF HDFS SequenceFile 文档
先决条件
在您尝试从对象存储中读取数据前,确保已满足PXF 对象存储先决条件 。
创建外部表
PXF <objstore>:SequenceFile
配置文件支持以SequenceFile格式读取和写入数据。 PXF 支持以下 <objstore>
配置文件前缀:
对象存储 | 配置前缀 |
---|---|
Azure Blob Storage | wasbs |
Azure Data Lake | adl |
Google Cloud Storage | gs |
Minio | s3 |
S3 | s3 |
使用以下语法创建引用S3目录的Greenplum数据库外部表。 当您将记录插入可写外部表中时,您插入的数据块将写入指定目录中一个或多个文件。
CREATE [WRITABLE] EXTERNAL TABLE <table_name>
( <column_name> <data_type> [, ...] | LIKE <other_table> )
LOCATION ('pxf://<path-to-dir>
?PROFILE=<objstore>:SequenceFile[&SERVER=<server_name>][&<custom-option>=<value>[...]]')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import'|'pxfwritable_export')
[DISTRIBUTED BY (<column_name> [, ... ] ) | DISTRIBUTED RANDOMLY];
CREATE EXTERNAL TABLE命令中使用的特定关键字和值见下表中描述。
关键字 | 值 |
---|---|
<path‑to‑dir> | 对象存储中文件或目录的绝对路径 |
PROFILE=<objstore>:SequenceFile | PROFILE 必须指定为特定的对象存储。例如,s3:SequenceFile |
SERVER=<server_name> | PXF用于访问数据的命名服务器配置。可选的; 如果未指定,PXF将使用default 服务器。 |
<custom‑option>=<value> | 特定于SequenceFile的自定义选项描述见 PXF HDFS SequenceFile 文档 |
FORMAT ‘CUSTOM’ | 使用FORMAT ’CUSTOM '时指定(FORMATTER='pxfwritable_export') (写入) 或 (FORMATTER='pxfwritable_import') (读取) |
DISTRIBUTED BY | 如果您计划将现有Greenplum数据库表中的数据加载到可写外部表,考虑在可写外部表上使用与Greenplum表相同的分布策略或<字段名>。 这样做可以避免数据加载操作中segment节点间额外的数据移动。 |
如果要访问S3对象存储,则可以如使用DDL覆盖S3服务器配置中所述直接在 CREATE EXTERNAL TABLE
命令的自定义选项中提供S3凭据。
示例
有关SequenceFile读取/写入的示例,请参阅PXF HDFS SequenceFile 文档中的 示例: 将二进制数据写入HDFS。 在对象存储中运行示例,必要的修改如下:
使用上述的
CREATE EXTERNAL TABLE
语法和LOCATION
关键字及设置。例如, 假设您的服务名为s3srvcfg
:CREATE WRITABLE EXTERNAL TABLE pxf_tbl_seqfile_s3(location text, month text, number_of_orders integer, total_sales real) LOCATION ('pxf://BUCKET/pxf_examples/pxf_seqfile?PROFILE=s3:SequenceFile&DATA-SCHEMA=com.example.pxf.hdfs.writable.dataschema.PxfExample_CustomWritable&COMPRESSION_TYPE=BLOCK&COMPRESSION_CODEC=org.apache.hadoop.io.compress.BZip2Codec&SERVER=s3srvcfg') FORMAT 'CUSTOM' (FORMATTER='pxfwritable_export');
使用上述的
CREATE EXTERNAL TABLE
语法和LOCATION
关键字及设置。例如, 假设您的服务名为s3srvcfg
:CREATE EXTERNAL TABLE read_pxf_tbl_seqfile_s3(location text, month text, number_of_orders integer, total_sales real) LOCATION ('pxf://BUCKET/pxf_examples/pxf_seqfile?PROFILE=s3:SequenceFile&DATA-SCHEMA=com.example.pxf.hdfs.writable.dataschema.PxfExample_CustomWritable&SERVER=s3srvcfg') FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');