greenplum gpfdist工具

简介

gpfdist 是 Greenplum 数据库并行文件分发程序。 它可以被外部表和 gpload 用来并行地将外部表文件分发给 Greenplum 数据库 Segment节点。 它也可以被可写外部表使用,将Segment节点上的数据写入目标文件中。 gpfdist 可以看成是一个http服务,因其是单进程模式,所以为实现服务端的并行,需要启动多个 gpfdist 服务。

greenplum外部表架构

greenplum gpfdist工具_第1张图片

gpfdist 主要功能

1 负载均衡:每个segment 分配到的数据都是随机的,所以每个节点都比较均衡;
2 并发性能高:每个segment 同时通过网卡到文件服务器上读取数据,并发读取,性能高效。相比于copy命令,数据需要通过Master节点流入,而是用外部表 + gpfdist 便解决了此问题。

gpfdist工具的使用

1 语法格式

greenplum gpfdist工具_第2张图片
2 使用案例
数据文件路径: /home/gpadmin/test/1.text

2.1 启动gpfdist服务

[root@gpadmin]gpfdist -d /home/gpadmin/test -p 8181 -l /tmp/gpfdist.log

2.2 创建本地加载数据表

CREATE TABLE test (
     id int primary,
     name vaechar(20)
) distributed by (id)

2.3 创建外部表

DROP EXTERNAL TABLE test;

CREATE EXTERNAL TABLE test_gpfdist(
      id       int,
    name vaechar(20)
)
location(‘gpfdist://10.229.78.25:8080/1.txt’)
Format 'TEXT' (delimiter as E'|' null as '' escape 'OFF');




location中填写的gpfdist://服务器地址:端口/文件名称

服务器地址:就是安装linux系统的ip。

端口:就是上面自己配饰的访问gpfdist的端口。

文件名称:就是准备的数据文件名称。

format:设置加载数据文件的格式,delimiter as 定义数据之间的分隔符,这里用到的是 | , null as 定义了null用OFF替换。

2.4 将外部表数据加载至本地数据表

Insert into test select *from test_gpfdist;

2.5 查看插入结果

postgres=# select * from test_gpfdist;
 id | name 
----+------
  1 | a
  1 | a
  1 | a
  1 | a
  2 | b
  2 | b
  2 | b
  2 | b
(8 rows)

附加

创建外部表的语法

CREATE [READABLE] EXTERNAL [TEMPORARY | TEMP] TABLE table_name     
    ( column_name data_type [, ...] | LIKE other_table )
     LOCATION ('file://seghost[:port]/path/file' [, ...])
       | ('gpfdist://filehost[:port]/file_pattern[#transform=trans_name]'
           [, ...]
       | ('gpfdists://filehost[:port]/file_pattern[#transform=trans_name]'
           [, ...])
       | ('pxf://path-to-data?PROFILE=profile_name[&SERVER=server_name][&custom-option=value[...]]'))
       | ('s3://S3_endpoint[:port]/bucket_name/[S3_prefix] [region=S3-region] [config=config_file]')
     [ON MASTER]
     FORMAT 'TEXT' 
           [( [HEADER]
              [DELIMITER [AS] 'delimiter' | 'OFF']
              [NULL [AS] 'null string']
              [ESCAPE [AS] 'escape' | 'OFF']
              [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
              [FILL MISSING FIELDS] )]
          | 'CSV'
           [( [HEADER]
              [QUOTE [AS] 'quote'] 
              [DELIMITER [AS] 'delimiter']
              [NULL [AS] 'null string']
              [FORCE NOT NULL column [, ...]]
              [ESCAPE [AS] 'escape']
              [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
              [FILL MISSING FIELDS] )]
          | 'CUSTOM' (Formatter=<formatter_specifications>)
    [ ENCODING 'encoding' ]
      [ [LOG ERRORS [PERSISTENTLY]] SEGMENT REJECT LIMIT count
      [ROWS | PERCENT] ]

你可能感兴趣的:(greenplum,服务器,linux,数据库,greenplum,数据库架构)