摘要: 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)

(原文地址:https://yq.aliyun.com/articles/7457)

[转]Greenplum 通过gpfdist + EXTERNAL TABLE 并行导入数据的更多相关文章

  1. [每日一题] OCP1z0-047 :2013-08-17 EXTERNAL TABLE――加载数据 ............................56

    正确答案:C 一.对答案解释: A.       TYPE:有两个选可供选择: 1.        ORACLE_LOADER:传统方式,与SQLLDR一样,参数从多,应用较多. 2.         ...

  2. External Table

    CREATE TABLE AS SELECT,使用Oracle9i的External Table  Oracle 9i 的一项新特性就是 External Table,它就象通常的数据库表一样,拥有字 ...

  3. 一起学Hive——创建内部表、外部表、分区表和分桶表及导入数据

    Hive本身并不存储数据,而是将数据存储在Hadoop的HDFS中,表名对应HDFS中的目录/文件.根据数据的不同存储方式,将Hive表分为外部表.内部表.分区表和分桶表四种数据模型.每种数据模型各有 ...

  4. 1.6-1.10 使用Sqoop导入数据到HDFS及一些设置

    一.导数据 1.import和export Sqoop可以在HDFS/Hive和关系型数据库之间进行数据的导入导出,其中主要使用了import和export这两个工具.这两个工具非常强大, 提供了很多 ...

  5. 从MySQL向Greenplum集群中导入数据

    我们要从MySQL当中导出数据到Greenplum当中,按照以下步骤就可以 1:将MySQL当中的表导出外部文件 以schema_name.table_name为例 select product_id ...

  6. greenplum 导入数据方式

    参考: http://gpdb.docs.pivotal.io/4390/admin_guide/load/topics/g-working-with-file-based-ext-tables.ht ...

  7. SQL Azure (18) 使用External Table实现垮库查询

    <Windows Azure Platform 系列文章目录> 问题 1.我们在进行SQL Server开发的时候,经常会使用垮库查询.但是在默认情况下,使用Azure SQL Datab ...

  8. Data import/export of Netezza using external table

    Introduction External table is a special table in Netezza system, which could be  used to import/exp ...

  9. 1118ALTER TABLE tabname DISCARD TABLESPACE快速导入数据利用表空间

    -- 快速导入数据如果你有.ibd文件的一个干净的备份,你可以按如下操作从被起源的地方恢复它到MySQL安装中:相当快速 1. 发出这个ALTER TABLE语句: 2. ALTER TABLE tb ...

随机推荐

  1. CSS 之 样式优先级机制

    多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 1.一般情况下,优先级从低到高,如下: 浏览器缺省(即浏览器默认) →(外部样 ...

  2. 查看java进程启动的详细参数和过程

    jsp 查看java进程: 6448 main 然后,使用jinfo pid 查看: jinfo 6448 有一行VM Flages:表示启动参数 VM Flags: -Dproc_main -*** ...

  3. 微信小程序 - 自定义弹窗组件

    2019-01-06:简化了一些代码,以及增加了可用性. // 弹窗配置 dialogConfig: { // 弹窗 dialogvisible: false, options: { // 显示关闭按 ...

  4. All you should know about NUMA in VMware!

    http://www.elasticvision.info/ All you should know about NUMA in VMware! Lets try answering some typ ...

  5. Linux下使用Supervisor来管理维护程序-详解

    一.场景 常常需要后台支行一个进程,或者开机自动运行等等. 首先,后台运行可以考虑使用nohup和&来实现,想实现开机运行,可以把命令写到/etc/rc.d/rc.local中. 但是,上面这 ...

  6. 用 bottle.py 写了个简单的升级包上传

    可以当作一个 demo 来玩吧,在这里分享一下.里面涉及的内容包含了文件上传,cookie 设置和读取,重定向(redirect). from bottle import run, post, get ...

  7. 关于IOS某图片添加控件,图片从相册或拍照保存后,再次进入时点击放大图无法显示的问题

    某图片添加控件: https://github.com/XZTLLQ/LQPhotoPickerDemo 问题: 标题已说明 代码块: NSArray *alAssetUrl =(NSMutableA ...

  8. cocos2d-js 3.0 RC0 监听返回键、菜单键、进入后台(home键)、恢复显示等事件

    cc.eventManager.addListener({ event: cc.EventListener.KEYBOARD, onKeyReleased: function(keyCode, eve ...

  9. spring 配置bean的方法及依赖注入发方式

    Bean 的配置方式:通过全类名(反射).通过工厂方法(静态工厂方法 & 实例工厂方法).FactoryBean 这里依据全类名配置bean <bean id="helloWo ...

  10. Echarts饼图更改颜色、显示数据且换行

    var option = {   title : {       text: '数据来源',       x:'center'   },   tooltip : {       trigger: 'i ...