Greeplum 系列(四) 实战

Greeplum 系列(四) 实战

表结构

(1) 拉链表结构

create table public.member_fatdt0 (
    member_id varchar(64),
    phoneno varchar(64),
    dw_beg_date date,
    dw_end_date date,
    dtype char(1),
    dw_status char(1),
    dw_ins_date date
) with (appendonly=true, compresslevel=5)
distributed by(member_id)
partition by range (dw_end_date)
(
    partition p20111201 start (date ‘2011-12-01‘) inclusive,
    partition p20111202 start (date ‘2011-12-02‘) inclusive,
    partition p20111203 start (date ‘2011-12-03‘) inclusive,
    partition p20111204 start (date ‘2011-12-04‘) inclusive,
    partition p20111205 start (date ‘2011-12-05‘) inclusive,
    partition p20111206 start (date ‘2011-12-06‘) inclusive,
    partition p20111207 start (date ‘2011-12-07‘) inclusive,
    partition p30001231 start (date ‘3000-12-31‘) inclusive
    end (date ‘3001-01-01‘) exclusive
);

(2) 增量表结构

create table public.member_delta (
    member_id varchar(64),
    phoneno varchar(64),
    action char(1),
    dw_ins_date date
) with (appendonly=true, compresslevel=5)
distributed by(member_id);

(3) 临时表结构

create table public.member_tmp0 (
    member_id varchar(64),
    phoneno varchar(64),
    dw_beg_date date,
    dw_end_date date,
    dtype char(1),
    dw_status char(1),
    dw_ins_date date
) with (appendonly=true, compresslevel=5)
distributed by(member_id)
partition by list (dtype)
(
    partition phis values(‘H‘),
    partition pcur values(‘C‘),
    default partition other
);

(4) 临时表结构

create table public.member_tmp1 (
    member_id varchar(64),
    phoneno varchar(64),
    dw_beg_date date,
    dw_end_date date,
    dtype char(1),
    dw_status char(1),
    dw_ins_date date
) with (appendonly=true, compresslevel=5)
distributed by(member_id);

数据导入

1. insert

insert into public.member_delta values(‘mem006‘, ‘13100000006‘, ‘I‘, date‘2011-12-03‘);
insert into public.member_delta values(‘mem002‘, ‘13100000002‘, ‘D‘, date‘2011-12-03‘);
insert into public.member_delta values(‘mem003‘, ‘13100000003‘, ‘U‘, date‘2011-12-03‘);

2. insert

mem001,13100000001,2011-12-01,3000-12-31,C,I,2011-12-01
mem002,13100000002,2011-12-01,3000-12-31,C,I,2011-12-01
mem003,13100000003,2011-12-01,3000-12-31,C,I,2011-12-01
mem004,13100000004,2011-12-01,3000-12-31,C,I,2011-12-01
mem005,13100000005,2011-12-01,3000-12-31,C,I,2011-12-01
copy public.member_fatdt0_1_prt_p30001231 from ‘/home/gpadmin/member_his_init.dat‘ with delimiter ‘,‘;

3. 外部表

首先,启动 gpfdist 服务

nohup gpfdist -d /home/gpadmin/data -p 8888 -l /home/gpadmin/data/gpfdist.log &

其次,创建外部表

drop external table if exists public.member_ext;
create external table public.member_ext (
    member_id varchar(64),
    phoneno varchar(64),
    action char(1),
    dw_ins_date date
)
location (‘gpfdist://localhost:8888/member_delta.dat‘)
format ‘text‘ (delimiter ‘,‘ null as ‘‘ escape ‘off‘)
encoding ‘utf-8‘
log errors into member_err segment reject limit 2 rows;

再编辑 /home/gpadmin/data/member_delta.dat 文件

mem001,13100000001,I,2011-12-01

最后,将外部表的数据加载到内部表

insert into public.member_delta select * from public.member_ext;

4. gpload

gpload 是对外部表的一层封装,首先编写 gpload 控制文件 gpload.yml,代码如下:

---
VERSION: 1.0.0.1
DATABASE: test
USER: gpadmin
HOST: localhost
PORT: 5432
GPLOAD:
  INPUT:
    - SOURCE:
        LOCAL_HOSTNAME:
          - master
        PORT: 8888
        FILE:
          - /home/gpadmin/data/member_delta.dat
    - COLUMNS:
        - member_id: varchar(64),
        - phoneno: varchar(20),
        - action: char(1),
        - dw_ins_date: date
    - FORMAT: text
    - DELIMITER: ‘,‘
    - ERROR_LIMIT: 2
    - ERROR_TABLE: public.member_err
  OUTPUT:
    - TABLE: public.member_delta
    - MODE: INSERT
  SQL:
    - BEFORE: "truncate table public.member_delta"
    - AFTER: "analyze public.member_delta"

执行 gpload 命令,结果如下:

gpload -f gpload.yml
2018-05-18 20:53:10|INFO|gpload session started 2018-05-18 20:53:10
2018-05-18 20:53:10|INFO|started gpfdist -p 8888 -P 8889 -f "/home/gpadmin/data/member_delta.dat" -t 30
2018-05-18 20:53:11|INFO|running time: 0.85 seconds
2018-05-18 20:53:11|INFO|rows Inserted          = 1
2018-05-18 20:53:11|INFO|rows Updated           = 0
2018-05-18 20:53:11|INFO|data formatting errors = 0
2018-05-18 20:53:11|INFO|gpload succeeded

5. 可执行的外部表

drop external table if exists public.member_ext;
create external web table public.member_ext (
    member_id varchar(64),
    phoneno varchar(64),
    action char(1),
    dw_ins_date date
)
execute ‘cat /home/gpadmin/data/member_delta.dat‘ on master
format ‘text‘ (delimiter ‘,‘ null as ‘‘ escape ‘off‘)
encoding ‘utf-8‘;

create table public.test_partition_list (

member_id numeric,

city character varying(32)

) distributed by(member_id)

partition by list(city)

(

partition guangzhou values(‘guangzhou‘),

partition hangzhou values(‘hangzhou‘),

partition shanghai values(‘shanghai‘),

partition beijing values(‘beijing‘),

default partition other_city

);



每天用心记录一点点。内容也许不重要,但习惯很重要!

原文地址:https://www.cnblogs.com/binarylei/p/9069419.html

时间: 2024-08-30 00:41:01

Greeplum 系列(四) 实战的相关文章

ElasticSearch实战系列四: ElasticSearch理论知识介绍

前言 在前几篇关于ElasticSearch的文章中,简单的讲了下有关ElasticSearch的一些使用,这篇文章讲一下有关 ElasticSearch的一些理论知识以及自己的一些见解. 虽然本人是一个实战派,不太喜欢讲这些理论知识,因为这块可以查看官方文档,那里会写得非常详细,但是在使用了ElasticSearch之后,发现有的知识点需要掌握一定的理论知识才能理解,对于初学者来说有的不好理解,因此写下该篇文章,希望读者在看完之后能够有所帮助. ElasticSearch 理论知识介绍 Ela

Greeplum 系列(三) 基本用法

Greeplum 系列(三) 基本用法 <PostgreSQL 教程>:https://www.yiibai.com/postgresql 一.Greeplum 登陆与创建 1.1 登陆 psql -d test -h 127.0.0.1 -p 5432 -U gpadmin 注意:默认登陆的表名为 gpadmin 1.2 创建数据库 create database test; # 需要登陆 psql createdb test; # 命令行模式 二.创建与管理模式 访问模式的对象:schem

Exchange 2013SP1和O365混合部署系列四

前面的三篇算是准备工作,今天我们看下如何在Exchange 2013 SP1中配置启用混合部署.老规矩,先看图,特别注意的我会,指出. 在EAC面板有个混合选项.点击启用.然后会登录到0365. 继续下一步. 继续下一步. 继续下一步. 远程迁移需要一张公网的证书. 继续下一步,需要输入凭据. 下面会自动开始配置. 混合部署到这里,算是配置完成. 组织里面多了本地到O365的通道. O365里面则相反的. 下篇我们将介绍本地新建O365账号和本地到O365的迁移. 先到这里. Exchange

ICMP拒绝服务攻击(原始套接字系列四)

拒绝服务攻击(DoS)企图通过使被攻击的计算机资源消耗殆尽从而不能再提供服务,拒绝服务攻击是最容易实施的攻击行为.中美黑客大战中的中国黑客一般对美进行的就是拒绝服务攻击,其技术手段大多不够高明. ICMP实现拒绝服务攻击的途径有二:一者"单刀直入",一者"借刀杀人".具体过程分析如下:   ICMPFLOOD攻击 大量的 ICMP消息发送给目标系统,使得它不能够对合法的服务请求做出响应.中美黑客大战中的多数中国黑客采用的正是此项技术.ICMP FLOOD攻击实际上是

Lync Server 2010 安装部署系列四:安装&配置证书服务器

1.打开"服务器管理器" 2.添加角色 3.单击下一步按钮 4.勾选"Active Directory证书服务" 5.单击"下一步"按钮: 6.勾选"证书颁发机构"和"证书颁发机构Web注册",单击"下一步"按钮: 7.勾选"企业",单击"下一步"按钮: 8.勾选"根CA",单击"下一步"按钮: 9.勾选&q

sed修炼系列(四):sed中的疑难杂症

本文目录:1 sed中使用变量和变量替换的问题2 反向引用失效问题3 "-i"选项的文件保存问题4 贪婪匹配问题5 sed命令"a"和"N"的纠葛 1.sed中使用变量和变量替换的问题 在脚本中使用sed的时候,很可能需要在sed中引用shell变量,甚至想在sed命令行中使用变量替换.也许很多人都遇到过这个问题,但引号却死活调试不出正确的位置.其实这不是sed的问题,而是shell的特性.搞懂sed如何解决引号的问题,对理解shell引号问题有

So Easy! Oracle在Linux上的安装配置系列四

So Easy! Oracle在Linux上的安装配置系列四  监听器的配置 在创建了数库和各种数据库对象并装载了数据后,下一步是在数据库服务器与使用它的用户之间建立连 接,Oracle Net Services使这种连接成为可能.Oracle Net Services组件必须"存活"在客户机和服务器上,它们一般使用TCP/IP网络协议来建立客户机和数据库服务器之间的网络连接. 本文官方文档位置: http://docs.oracle.com/cd/E11882_01/network.

Apache Kafka系列(四) 多线程Consumer方案

Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka系列(三) Java API使用 Apache Kafka系列(四) 多线程Consumer方案 本文的图片是通过PPT截图出的,读者如果修改意见请联系我 一.Consumer为何需要实现多线程 假设我们正在开发一个消息通知模块,该模块允许用户订阅其他用户发送的通知/消息.该消息通知模块采用Apache Kafka,那么整个架构应该是消息的发布者通过Producer调用AP

Java-单机版的书店管理系统(练习设计模块和思想_系列 四(2) )

说明: 本博客为补全上篇-Java-单机版的书店管理系统(练习设计模块和思想_系列 四(1) )的,所以如果不懂,请先看上一篇. 本系列都是我一步一步学习来的, 所以,可能比较适合初学设计模块的人来学. 现在补全我目前写的所以代码: 公共类: 用户类型枚举:UserTypeEnum类 package cn.hncu.bookStore.common; /** * 功能:用户类型的枚举!<br/> * 定义在公共模块.<br/> * 变量:<br/> * ADMIN(1,