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

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 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)


目录
相关文章
|
运维 监控 数据可视化
日志服务 HarmonyOS NEXT 日志采集最佳实践
鸿蒙操作系统(HarmonyOS)上的日志服务(SLS)SDK 提供了针对 IoT、移动端到服务端的全场景日志采集、处理和分析能力,旨在满足万物互联时代下应用的多元化设备接入、高效协同和安全可靠运行的需求。
117800 108
|
5月前
|
SQL 关系型数据库 数据库
【赵渝强老师】创建PostgreSQL的数据库
本文介绍了在PostgreSQL中通过SQL命令“create database”创建数据库的方法。首先查询系统目录pg_database以查看现有数据库集合,然后使用“create database”命令创建新数据库,并了解其在$PDATA/base目录下对应的文件夹生成。最后重新查询数据库集合确认创建结果,附带视频讲解便于理解操作步骤及注意事项。
129 1
|
6月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle数据库的闪回表
本文介绍了Oracle数据库中的闪回表(Flashback Table)功能,它能够将表的数据快速恢复到特定时间点或系统改变号(SCN),无需备份。文章通过实战示例详细演示了如何使用闪回表恢复数据,包括授权、创建测试表、记录时间与SCN号、删除数据、启用行移动功能、执行闪回操作以及验证恢复结果等步骤。同时,还展示了如何通过触发器禁止插入操作,并在闪回过程中处理触发器的启用问题。文末附有视频讲解,帮助读者更好地理解闪回表的使用方法。
229 10
|
Shell Linux 开发工具
linux shell脚本利用 kill -0 检查进程是否存在
linux shell脚本利用 kill -0 检查进程是否存在
452 1
|
Prometheus 监控 数据可视化
Grafana 插件生态系统:扩展你的监控能力
【8月更文第29天】Grafana 是一个流行的开源平台,用于创建和共享统计数据的仪表板和可视化。除了内置的支持,Grafana 还有一个强大的插件生态系统,允许用户通过安装插件来扩展其功能。本文将介绍一些 Grafana 社区提供的插件,并探讨它们如何增强仪表盘的功能性。
814 3
|
关系型数据库 MySQL 数据库
ClickHouse(07)ClickHouse数据库引擎解析
ClickHouse支持多种数据库引擎,包括Atomic(默认)、MySQL、MaterializeMySQL、Lazy、PostgreSQL、MaterializedPostgreSQL。Atomic提供非阻塞的表操作和原子的表交换,有UUID标识和延迟删除功能。MySQL引擎允许与远程MySQL服务器交互,支持INSERT和SELECT,不支持RENAME操作。PostgreSQL引擎类似,可与远程PostgreSQL服务进行读写操作。SQLite引擎用于连接SQLite数据库。实验性引擎如MaterializeMySQL和MaterializedPostgreSQL用于实现实时数据同步。
910 5
|
存储 缓存 关系型数据库
【PostgreSQL内核】Trigger的一生
前言本文简单介绍 PostgreSQL 数据库的 Trigger 从创建、存储、触发、执行、修改,到删除的过程,贯穿 Trigger 的一生。文中引用的函数、结构体来源于 PG 14 源码,分支为 REL_14_STABLE,对应的 commit id 如下。此外还引用了 PG 14 官方文档。commit be0b0528cb64d49750fcb632faa2cfcd8d920be2 Auth
784 0
|
关系型数据库 MySQL 数据库
windows上同时安装两个不同版本的mysql
windows上同时安装两个不同版本的mysql
326 1
windows上同时安装两个不同版本的mysql
|
应用服务中间件 nginx 监控
如何检测 Web 服务请求丢失问题
导读 『StabilityGuide』是阿里多位阿里技术工程师共同发起的稳定性领域的知识库开源项目,涵盖性能压测、故障演练、JVM、应用容器、服务框架、流量调度、监控、诊断等多个技术领域,以更结构化的方式来打造稳定性领域的知识库,欢迎您的加入。
2800 87
|
传感器 机器学习/深度学习 Ubuntu
【ur3机械臂配置夹爪Robotiq2F-85】
【ur3机械臂配置夹爪Robotiq2F-85】
690 0