摘要: Greenplum 提供了快速导入数据的方法,下面经过一个例子演示给你们.服务器
Greenplum 提供了快速导入数据的方法,下面经过一个例子演示给你们.网络
咱们用TPCH测试中最大的表作导入测试测试
首先简单介绍下原理.blog
1) Greenplum 经过外部表的方式让全部 segment 同时链接到一组外部服务 gpfdist, 同时拉取数据资源
2) gpfdist 随机分发数据给全部 segment.it
3) segment拿到数据后先解析它,根据表的分发规则收下属于本身的数据,把不属于本身的数据再分发给所属的segment.io
整个过程充分利用了网络和各 segment 的硬件资源,效率极高.ast
demo:class
1) 在文件服务器上启动gpfdist服务,端口号8080,指定文本文件所在目录效率
./gpfdist -d /u01/gp001/dss-data/ -p 8080 -l /u01/gp001/loadlog.log
2) 链接Greenplum master节点,建立外部表
CREATE EXTERNAL TABLE LINEITEM_LOAD (
L_ORDERKEY INTEGER ,
L_PARTKEY INTEGER ,
L_SUPPKEY INTEGER ,
L_LINENUMBER INTEGER,
L_QUANTITY DECIMAL,
L_EXTENDEDPRICE DECIMAL,
L_DISCOUNT DECIMAL,
L_TAX DECIMAL,
L_RETURNFLAG CHAR(1),
L_LINESTATUS CHAR(1),
L_SHIPDATE DATE,
L_COMMITDATE DATE,
L_RECEIPTDATE DATE,
L_SHIPINSTRUCT CHAR(25),
L_SHIPMODE CHAR(10),
L_COMMENT VARCHAR(44)
) LOCATION ('gpfdist://1192.168.1.1:8080/lineitem.csv')
FORMAT 'CSV' (DELIMITER '|');
关键信息:
1. 指定了外部数据源是刚才启动的gpfdist服务,并指定了须要导入的文本文件名
2 文本的根式是CSV,列之间用 | 分隔.
3) 按照需求建立表,数据会导入到这个表中
CREATE TABLE LINEITEM (
L_ORDERKEY ,
L_PARTKEY ,
L_SUPPKEY ,
L_LINENUMBER INTEGER,
L_QUANTITY DECIMAL,
L_EXTENDEDPRICE DECIMAL,
L_DISCOUNT DECIMAL,
L_TAX DECIMAL,
L_RETURNFLAG CHAR(1),
L_LINESTATUS CHAR(1),
L_SHIPDATE DATE,
L_COMMITDATE DATE,
L_RECEIPTDATE DATE,
L_SHIPINSTRUCT CHAR(25),
L_SHIPMODE CHAR(10),
L_COMMENT VARCHAR(44)
) with (OIDS=false) DISTRIBUTED BY (l_orderkey, l_linenumber);
4) 经过外部数据源把数据导入到 Greenplum 中
insert into lineitem select * from lineitem_load;
5) 经过执行计划,能够理解他是工做原理, 整个过程 master 节点不会处理数据,都由 segment完成.
explain insert into lineitem select * from lineitem_load;
QUERY PLAN
-----------------------------------------------------------------------------------------------------
Insert (slice0; segments: 16) (rows=62500 width=426)
-> Redistribute Motion 16:16 (slice1; segments: 16) (cost=0.00..18500.00 rows=62500 width=426)
Hash Key: l_orderkey, lineitem_load.l_linenumber
-> External Scan on lineitem_load (cost=0.00..18500.00 rows=62500 width=426)
Settings: effective_cache_size=1GB
(5 rows)
(原文地址:https://yq.aliyun.com/articles/7457)