装载和卸载数据
这一节中的主题描述了Greenplum数据库中将数据装载进来和写出去的方法,以及如何格式化数据文件。
Greenplum数据库支持高性能的并行数据装载和卸载,并且支持对较少数据、单个文件的非并行数据导入和导出。
Greenplum数据库可以对多种类型的外部数据源读出和写入,包括文本文件、Hadoop文件系统、亚马逊S3以及Web服务器。
- SQL命令COPY在Master主机上的一个外部文本文件或在Segment主机上的多个文本文件和一个Greenplum数据库表之间传输数据。
- 外部表允许用户使用如SELECT、JOIN或者SORT EXTERNAL TABLE DATA等SQL命令并行地直接查询位于数据库之外的数据。用户可以为外部表创建视图。外部表常常被用在一个如CREATE TABLE table AS SELECT * FROM ext_table之类的命令中,用于装载外部数据到一个普通的数据库表中
- 外部Web表提供对动态数据的访问。它们背后可以是来自于用HTTP协议访问的URL的数据或者一个运行在一个或者更多Segment上的OS脚本的输出数据。
- gpfdist工具是Greenplum数据库的并行文件分发程序。它是一个配合外部表使用的HTTP服务器,它允许Greenplum数据库的Segment并行地从多个文件系统装载外部数据。用户可以在不同的主机和网络接口上运行多个gpfdist的实例并且并行访问它们。
- gpload工具使用gpfdist和一个YAML格式的控制文件使装载任务的步骤自动化。
- 用户可以使用Greenplum Platform Extension Framework(PXF)创建可读写的外部表,并使用这些表将数据加载到Greenplum数据库或从中卸载数据。如想了解如何使用PXF,请参阅使用PXF访问外部数据。
装载数据的方法选择取决于源数据的特性—它的位置、尺寸、格式以及是否需要转换。
在最简单的情况中,SQL命令COPY从一个对Greenplum数据库Master实例可访问的文本文件中装载数据到一个表中。这样做不需要设置并且可以为较少的数据提供很好的性能。通过COPY命令,数据可以在Master主机上的单个文件和数据库之间来回复制。这限制数据集的总尺寸为外部文件所在文件系统的容量并且把数据传输限制为一个单一的文件写流。
用于大型数据集的更高效的数据装载选项利用了Greenplum数据库的MPP架构,使用Greenplum数据库的Segment并行装载数据。这些方法允许数据从多个文件系统通过多个主机上的多个NIC被装载,达到非常高的数据传输率。外部表允许用户从数据库中像访问普通数据库表一样访问外部文件。在与Greenplum数据库的并行文件分发程序gpfdist一起使用时,外部表通过使用所有的Greenplum数据库Segment来装载或卸载数据达到完全并行。
Greenplum数据库利用了Hadoop分布式文件系统的并行架构来访问其上的文件。
使用PXF访问外部数据
您组织管理的数据可能已存在于外部源中,例如Hadoop,对象存储库和其他SQL数据库。 Greenplum平台扩展框架(PXF)通过内置连接器提供对此外部数据的访问,该连接器将外部数据源映射到Greenplum数据库表定义。- 使用gpfdist和gpload转换外部数据
gpfdist并行文件服务器允许用户设置转换,使Greenplum数据库外部表能够以CREATE EXTERNAL TABLE命令的FORMAT子句不支持的格式读取和写入文件。input转换以外部数据格式读取文件,并以CSV或外部表的FORMAT子句中指定的其他文本格式将行输出到gpfdist。output转换以文本格式从gpfdist接收行,并将它们转换为外部数据格式。
Parent topic: Greenplum数据库管理员指南