从对象存储中读取Avro数据
PXF 对象存储连接器支持读取Avro格式数据。 本节描述如何使用PXF访问对象存储中的Avro数据, 包括创建和查询引用对象存储中Avro文件的外部表。
注意: 从对象存储访问Avro格式数据与访问HDFS中的Avro格式数据非常相似。 本主题标识了读取对象存储所需的特定信息,并在通用信息的位置链接到 PXF HDFS Avro 文档。
先决条件
在您尝试从对象存储中读取数据前,确保已满足PXF 对象存储先决条件 。
使用Avro数据
有关Apache Avro数据序列化框架的说明,请参考PXF HDFS Avro文档中的使用Avro数据
创建外部表
使用 <objstore>:avro
配置文件从对象存储中读取Avro格式文件。PXF 支持以下 <objstore>
配置前缀:
对象存储 | 配置前缀 |
---|---|
Azure Blob Storage | wasbs |
Azure Data Lake | adl |
Google Cloud Storage | gs |
Minio | s3 |
S3 | s3 |
以下语法创建一个引用Avro格式文件的Greenplum数据库可读外部表:
CREATE EXTERNAL TABLE <table_name>
( <column_name> <data_type> [, ...] | LIKE <other_table> )
LOCATION ('pxf://<path-to-file>?PROFILE=<objstore>:avro[&SERVER=<server_name>][&<custom-option>=<value>[...]]')
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
CREATE EXTERNAL TABLE命令中使用的特定关键字和值见下表中描述。
关键字 | 值 |
---|---|
<path‑to‑file> | 对象存储中文件或目录的绝对路径 |
PROFILE=<objstore>:avro | PROFILE 必须指定为特定的对象存储。例如, s3:avro |
SERVER=<server_name> | PXF用于访问数据的命名服务器配置。可选的; 如果未指定,PXF将使用default 服务器。 |
<custom‑option>=<value> | 特定于Avro的自定义选项描述见 PXF HDFS Avro 文档 |
FORMAT ‘CUSTOM’ | 在 <objstore>:avro 配置文件中使用 FORMAT 'CUSTOM' 。CUSTOM FORMAT 要求您指定为 (FORMATTER='pxfwritable_import') 。 |
如果要访问S3对象存储,则可以通过[CREATE EXTERNAL TABLE]命令中的自定义选项提供S3凭据,如使用DDL覆盖S3服务器配置中所述。
示例
有关Avro示例,请参阅PXF HDFS Avro 文档中的 示例: 读取Avro数据。在对象存储中运行示例,必要的修改如下:
将文件复制到对象存储而不是HDFS。 例如,将文件复制到S3:
$ aws s3 cp /tmp/pxf_avro.avro s3://BUCKET/pxf_examples/
使用上述的
CREATE EXTERNAL TABLE
语法和LOCATION
关键字及设置。例如, 假设您的服务名为s3srvcfg
:CREATE EXTERNAL TABLE pxf_s3_avro(id bigint, username text, followers text, fmap text, relationship text, address text) LOCATION ('pxf://BUCKET/pxf_examples/pxf_avro.avro?PROFILE=s3:avro&SERVER=s3srvcfg&COLLECTION_DELIM=,&MAPKEY_DELIM=:&RECORDKEY_DELIM=:') FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');