Greenplum 通过gpfdist + EXTERNAL TABLE 并行导入数据

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: Greenplum 提供了快速导入数据的方法,下面通过一个例子演示给大家.

Greenplum 提供了快速导入数据的方法,下面通过一个例子演示给大家.


我们用TPCH测试中最大的表做导入测试


首先简单介绍下原理.

1) Greenplum 通过外部表的方式让所有 segment 同时连接到一组外部服务 gpfdist, 同时拉取数据

2) gpfdist 随机分发数据给所有 segment.

3) segment拿到数据后先解析它,根据表的分发规则收下属于自己的数据,把不属于自己的数据再分发给所属的segment.


整个过程充分利用了网络和各 segment 的硬件资源,效率极高.


demo:

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)


目录
相关文章
|
关系型数据库 数据库 PostgreSQL
PostgreSQL 内存表可选项 - unlogged table
标签 PostgreSQL , 内存表 , unlogged table 背景 内存表,通常被用于不需要持久化,变更频繁,访问RT低的场景。 目前社区版本PostgreSQL没有内存表的功能,postgrespro提供了两个插件可以实现类似内存表的功能。
3093 0
|
12月前
OushuDB-通过gpfdist外部表导出数据
OushuDB-通过gpfdist外部表导出数据
56 0
|
SQL Linux 数据库
Hive 表 DML 操作——Hive 表 DML 操作——第1关:将文件中的数据导入(Load)到 Hive 表中
Hive 表 DML 操作——Hive 表 DML 操作——第1关:将文件中的数据导入(Load)到 Hive 表中
580 0
|
Oracle Java 关系型数据库
GreenPlum - Schema 如何连接?
GreenPlum - Schema 如何连接?
340 0
|
SQL 存储 分布式计算
Apache Hive--DDL--创建表--分桶表创建&分桶数据导入| 学习笔记
快速学习Apache Hive--DDL--创建表--分桶表创建&分桶数据导入
Apache Hive--DDL--创建表--分桶表创建&分桶数据导入| 学习笔记
|
SQL 大数据 Apache
Apache Hive--DDL--创建表--内外部表&like复制| 学习笔记
快速学习 Apache Hive--DDL--创建表--内外部表&like复制
Apache Hive--DDL--创建表--内外部表&like复制| 学习笔记
|
SQL 分布式计算 并行计算
PostgreSQL 并行计算解说 之25 - parallel FDW scan (并行访问多个外部表) with parallel append (FDW must with IsForeignScanParallelSafe)
标签 PostgreSQL , cpu 并行 , smp 并行 , 并行计算 , gpu 并行 , 并行过程支持 背景 PostgreSQL 11 优化器已经支持了非常多场合的并行。简单估计,已支持27余种场景的并行计算。 parallel seq scan
287 0
|
SQL 分布式计算 并行计算
PostgreSQL 并行计算解说 之13 - parallel OLAP : 中间结果 parallel with unlogged table
标签 PostgreSQL , cpu 并行 , smp 并行 , 并行计算 , gpu 并行 , 并行过程支持 背景 PostgreSQL 11 优化器已经支持了非常多场合的并行。简单估计,已支持27余种场景的并行计算。 parallel seq scan parallel
577 0

相关实验场景

更多