Greenplum中装载和卸载数据

本文详细介绍了在Greenplum中如何装载和卸载数据,包括使用外部表、gpload和COPY命令。讨论了gpfdist、gpfdists、gphdfs等协议,以及如何处理错误数据和性能优化。同时,提到了使用自定义格式和gpload工具进行数据装载,以及通过可写外部表实现数据卸载。
摘要由CSDN通过智能技术生成

装载和卸载数据

GP装载概述

关于外部表

1) 外部表允许用户像访问标准数据库表一样访问外部表
2) 结合GP的并行文件分配程序(gpfdist),外部表支持在装载和卸载数据时全并行化利用所有segment实例的资源
3) GP还可以利用Hadoop分布式文件系统的并行架构来访问文件
4) GP提供了两种类型的外部表:
可读外部表:用于数据装载,不允许对数据进行修改
可写外部表:用于数据卸载,从数据库表中选择记录并输出到文件、命令管道或其他的可执行程序,包括并行MapReduce计算。只需允许INSERT 操作。
5) 按数据源不同,分为两种可读外部表:
常规的:访问静态的平面文件
WEB:访问动态数据源(比如wen服务或者OS的命令或脚本)

关于gpload

1) gpload是一个数据并行装载命令
2) 需要创建一个按照YAML格式定义的装载说明控制文件

关于copy

1) 标准PostgreSQL装载和卸载命令
2) 不具有并行装载/卸载的机制

定义外部表

概述

在创建外部表定义时,必须指定文件格式和文件位置;三种用来访问外部表数据源的协议:gpfdist, gpfdists和gphdfs。

gpfdist

1) 在外部表指定文件的所有主机上运行GP文件分发程序(gpfdist)
2) 该程序指向一个给定的目录,并行的为所有segment实例提供外部数据文件服务
3) 如果文件使用了gzip或者bzip2压缩,gpfdist会自动解压
4) 可以使用多个gpfdist来提升外部表的扫描性能
5) 可使用通配符或者C风格的模式匹配多个文件

gpfdists

1) gpfdists是gpfdist的安全版本,其开启的加密通信并确保文件与GP之间的安全认证

file

1) 如果使用file://协议,则外部文件必须存放在segment主机上面
2) 指定的符合segment实例数量的的URIs将并行工作来访问外部表
3) 每个segment主机外部文件的数量不能超过segment实例数量
4) pg_max_external_files用来确定每个外部表中允许多少个外部文件

gphdfs

1) 该协议指定了一个可以在HDFS上包含通配符的路径。
2) 在GP链接到HDFS文件时,所有数据将从HDFS数据节点被并行读取到GP的Segment实例以快速处理。
3) 每个GP Segment实例只读取一组Hadoop数据块。
4) 对于写来说,每个GP Segment实例值写该实例包含的数据

外部文件格式

1) TEXT类型对所有协议有效
2) 逗号分割的CSV对于gpfdist和file协议有效
3) 自定义格式适用于gphdfs

外部表中的错误数据

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

外部表备份恢复

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

使用GP并行文件服务(gpfdist)

为最大化系统带宽而运行gpfdist要考虑的因素:
1) 关于gpfdist的设置与性能
如果ETL主机配置了多个网口,应将所有网口对应的主机名在LOCATION子句中声明
2) 在ETL主机上运行多个gpfdist并将外部数据均匀的分拆到各gpfdist服务。
3) 控制节点并行度
gp_external_max_segs参数设置最大多少Segment实例访问同一个gpfdist文件分发程序
4) 启动和停止gpfdist
a) 要启动gpfdist,必须指定其提供文件服务的目录以及运行的端口(缺省为HTTP端口8080)
b) 在后台启动gpfdist(日志信息和出错信息输出到日志文件)

 $ gpfdist –d /var/load_files –p 8081 –l /home/gpadmin/log &

c) 要在同一个ETL主机启动多个gpfdist服务,为每个服务指定不同的目录和端口。例如,

    $ gpfdist –d /var/load_files1 –p 8081 –l /home/gpadmin/log1 &
    $ gpfdist –d /var/load_files2 –p 8082 –l /home/gpadmin/log2 &

d) 停止后台的gpfdist服务:
第一步找到进程号,

$ ps –ef|grep gpfdist

第二步杀掉该进程

$ select pg_cancel_backend(1234);

5) gpfdist故障诊断
a) 确保GP Segment可以访问gpf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值