GreenPlum--外部表

外部表:

1、外部表允许用户像访问标准数据库表一样的访问外部表。
2、结合GP的并行文件分配程序(gpfdist),外部表支持在装载和卸载数据时全并行化利用所有segment实例的资源。
3、GP还可以利用Hadoop分布式文件系统的并行架构来访问文件。

GP提供了两种类型的外部表:
可读外部表:用于数据装载,不允许对数据进行修改。
可写外部表:用于数据卸载,从数据库表中选择记录并输出到文件、命令管道或其他的可执行程序,包括并行MapRuduce计算。只允许INSERT操作。

按照数据源不同,分为两种可读外部表:
常规的:访问静态的平面文件。
WEB:访问动态数据源(比如wen服务或者OS的命令或者脚本)

在创建外部表定义时,必须指定文件格式和文件位置。
外部文件格式:

TEXT类型对所有协议有效。
逗号分隔的CSV对于gpfdist和file协议有效
自定义格式适合于gphdfs

外部表中的错误数据:

	为了在装载正确格式的记录时隔离错误数据,需要在定义外部表时使用单条记录出错处理

外部表备份恢复:

	在备份或者恢复操作中,仅仅外部表或者WEB外部表的定义会备份或恢复。

定义外部表–使用GP并行文件服务(gpfdist)
为最大化系统带宽而运行gpfdist要考虑的因素:
·关于gpfdist的设置与性能
如果ETL主机配置了多个网口,应将说有网口对应的主机名在LOCATION子句中声明。
在ETL主机上运行多个gpfdist并将外部数据均匀的拆分到各gpfdist服务。
在这里插入图片描述

创建单文件服务的可读外部表,文件格式为竖线(|)分割:

CREATE EXTERNAL TABLE tb_ext_gf01 (id int,name text)
LOCATION('gpfdist://mdw:8081/*.txt')
FORMAT 'TEXT' (DELIMITER '|' NULL '');

创建多文件服务的可读外部表,文件格式为竖线(|)分割:

CREATE EXTERNAL TABLE tb_ext_gf02 (id int,name text)
LOCATION('gpfdist://mdw:8081/*.txt','gpfdist://mdw:8082/*.txt')
FORMAT 'TEXT' (DELIMITER '|' NULL '');

带有错误数据日志的多文件服务:

CREATE EXTERNAL TABLE tb_ext_gf03 (id int,name text)
LOCATION('gpfdist://mdw:8081/*.txt','gpfdist://mdw:8082/*.txt')
FORMAT 'CSV' (DELIMITER ',' )
LOG ERRORS INTO err_customer SEGMENT REJECT LIMIT 2;

查看错误日志:

select * from err_customer 

创建可写外部表:(用于数据导出)

CREATE WRITABLE EXTERNAL TABLE tb_ext_gf04 (LIKE tb_cp_02 )
LOCATION('gpfdist://mdw:8081/tb_cp_02.out')
FORMAT 'TEXT' (DELIMITER '|' NULL '')
DISTRIBUTED BY (id);
insert into tb_ext_gf04 select * from tb_cp_02 ;

使用select from 来访问外部表
装载全部数据到一个新的数据表
CREATE TABLE tb_load_01 AS SELECT * FROM tb_ext_gp01;

创建和使用WEB外部表
查询优化器不允许重复扫描WEB表的数据
使用CREATE EXTERNAL WEB TABLE 创建GP的WEB表
WEB外部表的定义有两种形式
WEB URL
使用http://协议指定WEB服务器上文件的LOCATION;
该WEB数据文件必须在GP segment可以访问的WEB服务上;
URL的数量将对应并行访问WEB表的segment实例

例如:

CREATE EXTERNAL WEB TABLE tb_ext_wb02 (name text,date date,amount float4,category text,description text )
LOCATION(
'http://intranet.company.com/expenses/markering/file.csv',
'http://intranet.company.com/expenses/eng/file.csv'
)
FORMAT 'CSV' (HEADER);

OS命令
在一个或者多个segment上指定执行SHELL命令或者脚本,输出结果作为WEB表访问的数据;
使用EXECUTE子句定义的外部表,将在指定的多个segment主机上执行指定的SHELL命令或者脚本;
注意限制执行WEB表命令的segment实例数量。
命令或程序必须放置到所有segment主机上
命令是从数据库执行而不是从登陆的SHELL
例如:

CREATE EXTERNAL WEB TABLE tb_ext_wb01 (output text)
EXECUTE 'hostname'
FORMAT 'TEXT';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值