摘要: 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. WPF 之 创建继承自Window 基类的自定义窗口基类

    开发项目时,按照美工的设计其外边框(包括最大化,最小化,关闭等按钮)自然不同于 Window 自身的,但窗口的外边框及窗口移动.最小化等标题栏操作基本都是一样的.所以通过查看资料,可按如下方法创建继承 ...

  2. Unbuntu和Centos中部署同时多版本PHP的详细过程

        镜像制作:Unbuntu14 部署LAMP过程 1.Azure经典版中创建源Ubuntu14,并使用Xshell连接,并切换到root帐户下. 2.安装php5.4,新建/var/local/ ...

  3. 世纪互联提供的关于Powershell中将虚拟机加入备份保管库的方法

    请您参考以下步骤进行操作,如有问题请与我们联系: 对一台ARM虚拟机(虚拟机名称:paularm08r21)进行备份(参考:https://www.azure.cn/documentation/art ...

  4. sql按分时段统计

    ),,) ctime, ) num FROM [eschool_1].[dbo].kg_Kaoqin ),,) ),,)

  5. JavaScript正则式练习

    使用正则式匹配第一个数字和最后一个数字,使用环视 str2 = 09051 : Fast Food Restaurants - Concession Stands/Snack Bars Delicat ...

  6. Redis问题MISCONF Redis is configured to save RDB snapshots....

    Redis问题MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on di ...

  7. python之函数用法islower()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法islower() #http://www.runoob.com/python/att ...

  8. Lotus Domino和关系型数据库(LEI,DESC,JDBC连接)

    Domino和关系数据库进行交互是日常项目开发中经常涉及到的一个方面,每个domino开发人员都写过这样的程序,本文就这个方面做一下简单的总结. 一.工具篇 1.使用LEI(Lotus Enterpr ...

  9. php Socket表单提交学习一下

    <?php //发送请求指定的页面 $file = "1.php"; $filename = "gitignore.txt"; //文件名 $path = ...

  10. centos7下安装nginx(转)

    一.下载nginx安装包 访问地址:https://nginx.org 根据自己的需求下载合适的安装包 二.安装gcc gcc是用来编译下载下来的nginx源码 yum install gcc-c++ ...