Greenplum外部表操作

合集下载

Greenplum数据库最佳实践

Greenplum数据库最佳实践

❖介绍本文介绍Pivotal Greenplum Database数据库(以下简称:Greenplum数据库,或GPDB)的最佳实践。

最佳实践是指能持续产生比其他方法更好结果的方法或者技术,它来自于实战经验,并被证实了遵循这些方法可以获得可靠的预期结果。

本最佳实践旨在通过利用所有可能的知识和技术为正确使用GPDB提供有效参考。

本文不是在教您如何使用Greenplum数据库的功能,而是帮助您在设计、实现和使用Greenplum数据库时了解需要遵循哪些最佳实践。

关于如何使用和实现具体的Greenplum 数据库特性,请参考 http://gpdb.docs.pivotal.io 上的Greenplum数据库帮助文档以及 上的Sandbox和实践指南。

本文目的不是要涵盖整个产品或者产品特性,而是概述GPDB实践中最重要的因素。

本文不涉及依赖于GPDB具体特性的边缘用例,后者需要精通数据库特性和您的环境,包括SQL 访问、查询执行、并发、负载和其他因素。

通过掌握这些最佳实践知识,会增加GPDB集群在维护、支持、性能和可扩展性等方面的成功率。

第一章最佳实践概述本部分概述了Greenplum数据库最佳实践所涉及的概念与要点。

数据模型GPDB 是一个基于大规模并行处理(MPP)和无共享架构的分析型数据库。

这种数据库的数据模式与高度规范化的事务性SMP数据库显著不同。

通过使用非规范化数据库模式,例如具有大事实表和小维度表的星型或者雪花模式,GPDB在处理MPP分析型业务时表现优异。

跨表关联(JOIN)时字段使用相同的数据类型。

详见数据库模式设计(后续章节)堆存储和追加优化存储(Append-Optimized,下称AO)若表和分区表需要进行迭代式的批处理或者频繁执行单个UPDATE、DELETE或INSERT 操作,使用堆存储。

若表和分区表需要并发执行UPDATE、DELETE或INSERT操作,使用堆存储。

Greenplum简明使用手册

Greenplum简明使用手册

GP服务启停su - gpadmingpstart #正常启动gpstop #正常关闭gpstop -M fast #快速关闭gpstop –r #重启gpstop –u #重新加载配置文件登陆与退出Greenplum#正常登陆psql gpdbpsql -d gpdb -h gphostm -p 5432 -U gpadmin#使用utility方式PGOPTIONS="-c gp_session_role=utility" psql -h -d dbname hostname -p port#退出在psql命令行执行\q参数查询psql -c 'SHOW ALL;' -d gpdbgpconfig --show max_connections创建数据库createdb -h localhost -p 5432 dhdw创建GP文件系统# 文件系统名gpfsdw# 子节点,视segment数创建目录mkdir -p /gpfsdw/seg1mkdir -p /gpfsdw/seg2chown -R gpadmin:gpadmin /gpfsdw# 主节点mkdir -p /gpfsdw/masterchown -R gpadmin:gpadmin /gpfsdwgpfilespace -o gpfilespace_configgpfilespace -c gpfilespace_config创建GP表空间psql gpdbcreate tablespace TBS_DW_DATA filespace gpfsdw;SET default_tablespace = TBS_DW_DATA;删除GP数据库gpdeletesystem -d /gpmaster/gpseg-1 -f查看segment配置select * from gp_segment_configuration;文件系统select * from pg_filespace_entry;磁盘、数据库空间SELECT * FROM gp_toolkit.gp_disk_free ORDER BY dfsegment;SELECT * FROM gp_toolkit.gp_size_of_database ORDER BY sodddatname;日志SELECT * FROM gp_toolkit.__gp_log_master_ext;SELECT * FROM gp_toolkit.__gp_log_segment_ext;表描述/d+ <tablename>表分析VACUUM ANALYZE tablename;表数据分布SELECT gp_segment_id, count(*) FROM <table_name> GROUP BY gp_segment_id;表占用空间SELECT relname as name, sotdsize/1024/1024 as size_MB, sotdtoastsize as toast, sotdadditionalsize as otherFROM gp_toolkit.gp_size_of_table_disk as sotd, pg_classWHERE sotd.sotdoid = pg_class.oid ORDER BY relname;索引占用空间SELECT soisize/1024/1024 as size_MB, relname as indexnameFROM pg_class, gp_toolkit.gp_size_of_indexWHERE pg_class.oid = gp_size_of_index.soioidAND pg_class.relkind='i';OBJECT的操作统计SELECT schemaname as schema, objname as table, usename as role, actionname as action, subtype as type, statime as timeFROM pg_stat_operationsWHERE objname = '<name>';锁SELECT locktype, database, c.relname, l.relation, l.transactionid, l.transaction, l.pid, l.mode, l.granted, a.current_queryFROM pg_locks l, pg_class c, pg_stat_activity aWHERE l.relation=c.oidAND l.pid=a.procpidORDER BY c.relname;队列SELECT * FROM pg_resqueue_status;加载(LOAD)数据到Greenplum数据库gpfdist外部表# 启动服务gpfdist -d /share/txt -p 8081 –l /share/txt/gpfdist.log &# 创建外部表,分隔符为’/t’drop EXTERNAL TABLE TD_APP_LOG_BUYER;CREATE EXTERNAL TABLE TD_APP_LOG_BUYER (IP text,ACCESSTIME text,REQMETHOD text,URL text,STATUSCODE int,REF text,name text,VID text)LOCATION ('gpfdist://gphostm:8081/xxx.txt')FORMAT 'TEXT' (DELIMITER E'/t'FILL MISSING FIELDS) SEGMENT REJECT LIMIT 1 percent;# 创建普通表create table test select * from TD_APP_LOG_BUYER;# 索引# CREATE INDEX idx_test ON test USING bitmap (ip);# 查询数据select ip , count(*) from test group by ip order by count(*); gpload# 创建控制文件# 加载数据gpload -f my_load.ymlcopyCOPY country FROM '/data/gpdb/country_data'WITH DELIMITER '|' LOG ERRORS INTO err_countrySEGMENT REJECT LIMIT 10 ROWS;从Greenplum数据库卸载(UNLOAD)数据gpfdist外部表# 创建可写外部表CREATE WRITABLE EXTERNAL TABLE unload_expenses( LIKE expenses )LOCATION ('gpfdist://etlhost-1:8081/expenses1.out','gpfdist://etlhost-2:8081/expenses2.out')FORMAT 'TEXT' (DELIMITER ',')DISTRIBUTED BY (exp_id);# 写权限GRANT INSERT ON writable_ext_table TO <name>;# 写数据INSERT INTO writable_ext_table SELECT * FROM regular_table;copyCOPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/home/gpadmin/a_list_countries.out';执行sql文件psql gpdbname –f yoursqlfile.sql或者psql登陆后执行\i yoursqlfile.sqlGreenplum配置优化# 查询参数psql -c'SHOW ALL;' -d gpdbgpconfig--show max_connections# 修改参数配置命令gpconfig-c <parameter name> -v <parameter value>比如:gpconfig-c log_statement -v DDL# 使参数生效gpstop –r# 修改默认搜索路径# 默认dbtestALTERDATABASE dhgp SET search_path TO dbtest;# 设置work_mem 64MBALTERDATABASE dhgp SET work_mem TO 65536;另一种写法:SETwork_mem TO '64MB'# 设置maintenance_work_mem 128MBALTER DATABASEdhgp SET maintenance_work_mem TO 131072; # 设置max_work_mem 4GALTERDATABASE dhgp SET max_work_mem TO 4194304;# 设置statement_memALTERDATABASE dhgp SET statement_mem TO '256MB';# 12G,需要配合修改/etc/sysctl.conf kernel.shmmaxALTERDATABASE dhgp SET effective_cache_size TO 1572864;# 在各个节点的postgres.conf文件中配置,master和每个segment的可以使用的cpu个数Master:gp_resqueue_priority_cpucores_per_segment 8Segment:2# checkpoint_segments32-256(512MB-4GB)。

Greenplum安装手册--完善版

Greenplum安装手册--完善版

GREENPLUM部署文档Greenplum数据库安装手册目录第一章文档概述 (4)1.1适用范围 (4)1.2文档说明 (4)第二章安装前准备 (5)2.1网络规划 (5)2.2存储空间规划 (5)2.3数据库实例规划 (6)第三章安装介质 (7)3.1R EDHAT (7)3.1.1系统补丁 (7)3.1.2Greenplum安装介质 (7)3.1.3操作系统建议 (8)第四章操作系统准备 (9)4.1修改主机名 (9)4.2修改/ETC/HOSTS文件 (9)4.3关闭相关服务 (11)4.4修改系统参数(R EDHAT) (11)4.4.1修改系统参数/etc/sysctl.conf (12)4.4.2修改系统参数/etc/security/limits.conf (12)4.4.3修改磁盘预读参数 (13)4.4.4修改配置/boot/grub/menu.lst .......................................................... 错误!未定义书签。

4.4.5修改配置/etc/sysconfig/language ..................................................... 错误!未定义书签。

4.5启动IPMI服务 .......................................................................................... 错误!未定义书签。

4.6修改启动配置 ........................................................................................... 错误!未定义书签。

4.7关闭非必要的服务.................................................................................... 错误!未定义书签。

GreenPlum使用手册

GreenPlum使用手册

GreenPlum数据库集群安装说明及使用手册开心十二月总结****年**月**日目录1体系结构介绍 (4)2安装 (10)2.1安装 (10)2.1.1安装准备 (10)2.1.2安装gp-db (11)2.1.3配置通讯 (13)2.1.4建立数据存储池 (17)2.1.5同步系统时间 (17)2.1.6验证安装是否成功 (17)2.1.7初始化 (17)2.1.8数据库的启停 (18)2.2Master双机热备 (19)2.3Segment节点互备 (20)3GP数据库的使用 (22)3.1pgAdminIII工具 (22)3.1.1安装和第一次使用pgAdminIII (22)3.1.2主窗体 (23)3.1.3导航菜单 (23)3.1.4工具栏介绍 (24)3.1.5数据库与表的创建 (25)3.1.6使用pgAdminIII备份数据库 (25)3.2JDBC配置 (26)3.3GP数据库两个重要概念 (27)3.3.1什么是Schema (27)3.3.2数据分布存储 (28)3.4GP的SQL语法 (28)3.4.1数据加载 (28)3.4.2SQL并行查询 (32)3.4.3聚合函数 (32)3.4.4索引 (32)3.4.5分区 (34)3.4.6函数 (35)4维护数据库 (39)4.1数据库启动gpstart (39)4.2数据库停止gpstop (41)4.3查看实例配置和状态 (41)4.4查看数据库运行状态gpstate (42)4.5查看用户会话和提交的查询等信息 (43)4.6查看数据库、表占用空间 (43)4.7查看数据分布情况 (44)4.8实例恢复gprecoverseg (44)4.9查看锁信息 (44)4.10数据库的备份与恢复 (44)5调优、排错 (44)6附件 (44)6.1DBA常用命令 (44)7Q&A (45)7.1不支持触发器 (45)7.2更新操作中的若干问题 (45)1体系结构介绍Greenplum数据库产品——下一代数据仓库引擎和分析方法Greenplum公司是企业数据云计算解决方案的创始人,为客户提供灵活的数据商业智能和分析方法。

Greenplum外部表操作

Greenplum外部表操作

Greenplum外部表操作本文将首先测试使用外部表的方式进行加载和卸载数据。

外部表-external tables,分为只读readable和只写writable两种类别,而每种又可以分为常规regular和web两种类型。

在外部表可以并行的查询、关联或者排序等等,视图也是可以基于外部表创建的,只是只读外部表只能select,只写外部表只能insert。

只读的常规regular和web外部表的区别是前者可以重读而后者无法重读。

和oracle当中的外部表类似,但是比oracle提供了更多中的协议方式,oracle当中只有平面文件file这种协议,而gp中提供了以下几种连接协议方式供外部表使用:gpfdist、gpfdists、file、gphdfs,gpfdists只是gpfdist的加密升级版,而且在使用上还有一些限制和配置负责,因此不多介绍。

首先介绍的是gpfdist协议的外部表,这个程序在master安装完后自带就存在的,在$GPHOME/bin目录下,在需要的时候手工启动,当然你也可以直接将这程序copy到别的机器上然后启动就可以充当外部表的服务器了。

7.1.0. gpfdist[gpadmin@o564gtser1 gpfdist]$ ls /usr/local/greenplum-db/bin/gpfdist -l-rwxr-xr-x 1 gpadmin gpadmin 819994 01-30 06:31 /usr/local/greenplum-db/bin/gpfdist几个常用的参数:-d 指定目录-p 指定端口-l 指定日志文件[gpadmin@o564gtser1 gpfdist]$ pwd/home/gpadmin/gpfdist[gpadmin@o564gtser1 gpfdist]$ gpfdist -d ./ -p 8001 -l ./gpfdist.log &[1] 4382[gpadmin@o564gtser1 gpfdist]$ [2013-04-30 21:46:21] [WRN gpfdist.c:2049] Creating the socket failedServing HTTP on port 8001, directory /home/gpadmin/gpfdist【测试gpfdist服饰是否开启:wget http://10.10.2.6:8001/e1.txt8001端口后面的目录默认是从gpfdist启动的目录开始的不是从/ 根目录开始netstat -anp | grep 8001{查看端口监听状况}正常显示:tcp 0 0 :::8001 :::* LISTEN 6 4186/gpfdistgpadmin用户在操作时不能操作root用户的文件夹和文件,用ll 查看文件夹和文件属于哪个用户;chown -R gpadmin:gpadmin 文件名;修改文件的用户和用户组-R递归】[gpadmin@o564gtser1 gpfdist]$ jobs[1]+ Running gpfdist -d ./ -p 8001 -l ./gpfdist.log &上面我手工启动了一个gpfdist服务器,目录是/home/gpadmin/gpfdist,端口8001,日志文件是/home/gpadmin/gpfdist/gpfdist.log,将下来我们将生产一个文本文件e1.txt,并手工输入一些记录,然后我们从数据库中创建一个外部表读取这些记录。

Greenplum或DeepGreen数据库对象的使用和管理

Greenplum或DeepGreen数据库对象的使用和管理

4) pg_bitmapindex模式
一个储存bitmap index对象的地方(值列表等)。该模式仅供GPDB系统内部使用,通常不建议管理员或者任何用户访问。
5) pg_aoseg模式
一个储存append-only表的地方。该模式仅供GPDB系统内部使用,通常不建议管理员或者任何用户访问。
pg_default | pg_system | 4 | /dbfast1/primary/dg2
pg_default | pg_system | 5 | /dbfast2/primary/dg3
pg_default | pg_system | 6 | /dbfast1/mirror/dg0
4. 使用表空间存储 DB 对象
表、索引、甚至整个DB都可以指定在特定的表空间。
若要如此,拥有给定表空间CREATE权限的Role必须通过表空间的名称作为相关命令的参数来实现,下
面是创建一个zhangyun_tbs表空间上的表:
CREATE TABLE test(id int) TABLESPACE zhangyun_tbs;
模式下的CREATE和USAGE权限。而在创建其他模式时,需要将该模式授权CHEMA zhangyun_schema;
CREATE SCHEMA zhangyun_schema AUTHORIZATION zhangyun;
模式搜索路径
mirror location 2> /dbfast_zhangyun_tbs/mirror #手工输入
master location> /dbfast_zhangyun_tbs/master #手工输入
[gpadmin@cdha ~]$ gpfilespace -c gpfilespace_config #基于gpfilespace_config配置文件创建文件空间

greenplum基本操作及管理命令

greenplum基本操作及管理命令

greenplum基本操作及管理命令第1章系统管理1.1 GP服务启停su - gpadmingpstart #正常启动gpstop #正常关闭gpstop -M fast #快速关闭gpstop –r #重启gpstop –u #重新加载配置文件1.2 登陆psql gpdbpsql -d gpdb -h gphostm -p 5432 -U gpadmin 1.3 查看segment配置select * from gp_segment_configuration;1.4 文件系统select * from pg_filespace_entry;1.5 列出所有数据库psql –l1.6 行表库最大尺寸一个数据库最大尺寸?无限制(已存在有32TB 的数据库)一个表的最大尺寸?32 TB一行记录的最大尺寸?1.6 TB一个字段的最大尺寸? 1 GB一个表里最大行数?无限制一个表里最大列数?250-1600 (与列类型有关)一个表里的最大索引数量?无限制当然,实际上没有真正的无限制,还是要受可用磁盘空间、可用内存/交换区的制约。

事实上,当这些数值变得异常地大时,系统性能也会受很大影响。

表的最大尺寸32 TB 不需要操作系统对大文件的支持。

大表用多个 1 GB 的文件存储,因此文件系统尺寸的限制是不重要的。

如果缺省的块大小增长到32K ,最大的表尺寸和最大列数还可以增加到四倍1.7 存储空间一个Postgres 数据库(存储一个文本文件)所占用的空间最多可能需要相当于这个文本文件自身大小5倍的磁盘空间。

第2章Psql操作2.1 创建/删除用户创建用户:createuser [-a] [-A] [-d] [-D] [-e] [-P] [-h 主机名] [-p port] 用户名参数说明:[-a]:允许创建其他用户,相当于创建一个超级用户;[-A]:不允许此用户创建其他用户;[-d]:允许此用户创建数据库;[-D]:不允许此用户创建数据库;[-e]:将执行过程显示到Shell上;[-P]:创建用户时,同时设置密码;[-h 主机名]:为某个主机上的Postgres创建用户;[-p port]:与-h参数一同使用,指定主机的端口。

greenplum gdfdist使用手册

greenplum gdfdist使用手册

greenplum gdfdist使用手册Greenplum GDFDist 使用手册概述Greenplum GDFDist 是一个用于在 Greenplum 数据库集群中进行分布式数据传输和加载的工具。

它提供了高效、可靠和并行的数据传输功能,能够加速数据导入和导出的过程。

本手册将向您介绍 GDFDist 的安装和配置方法,并提供一些常见的使用示例。

安装和配置1. 安装 GDFDistGDFDist 是作为 Greenplum 数据库分发功能的一部分提供的。

在安装 Greenplum 数据库时,GDFDist 已经被自动包括在内。

确保已正确安装 Greenplum 数据库版本来使用 GDFDist。

2. 配置 GDFDist在开始使用 GDFDist 之前,需要进行一些配置。

打开 Greenplum 数据库配置文件(通常位于 `$MASTER_DATA_DIRECTORY/gpseg-1/postgresql.conf`),找到以下配置项,并根据需要进行修改: - `gp_external_enable`:确保该配置项的值为 `on`,以启用外部表和 GDFDist 功能。

- `gp_external_max_segs`:根据您的集群规模和性能需求,适当调整此配置项的值。

它控制了能使用 GDFDist 进行数据传输的并行进程数量。

完成配置后,重新加载Greenplum 数据库配置文件以使更改生效。

使用示例以下是一些常见的 GDFDist 使用示例,展示了不同场景下如何高效地使用数据传输功能。

1. 从本地文件导入数据到 Greenplum 数据库使用 `COPY` 命令结合 GDFDist,可以将本地文件中的数据快速导入到 Greenplum 数据库中。

示例命令如下:```COPY my_table FROM PROGRAM 'gdfdist -F text -b my_file.txt' WITH (FORMAT CSV, HEADER);```在上述命令中,`my_table` 是指目标表的名称,`my_file.txt` 是指本地文件的路径名。

greenplum数据库笔记

greenplum数据库笔记
1.不支持对hash分布的key列做update操作,因为不支持hash列重分布后行数据在segments之间迁移。
2.UPDATE and DELETE statements that require data to move from one segment to another. This restricts the use of joins in update and delete operations to hash-distributed tables that have the same distribution key column(s), and the join condition must specify equality on the distribution key column(s).
互连冗余,意指每个segment至少双网卡,一用网络连接,二用内部数据传输,提高通信可靠性。
(详细参考白皮书的第五章系统管理的高可用性章节)
系统架构——数据并行加载
通过外部表(external table),使用并行文件服务器(gpfdist),可实现并行的数据加载。策略是M:N,即每个segment都会去连接每个gpfdist服务器。可通过postgresql.conf配置文件的gp_external_max_segs参数调整连接一个gpfdist服务器的segments个数,默认是64。
master镜像就是master的在线standby,因为master上面只保存目录表和系统日志,因此在standby上面有一个事务重复记录进程(gpsyncagent)连接master以同步,一旦master连不上即坏掉,该进程停止工作,并让standby从master上一个成功事务操作之后开始接管系统(PS:master出故障前,standby上面只有gpsyncagent一个进程运行)。

greenplum_GP建表

greenplum_GP建表
PROMO_ID numeric NOT NULL ,
QUANTITY_SOLD numeric(10,2) NOT NULL ,
AMOUNT_SOLD numeric(10,2) NOT NULL)
on commit preserve rows
AMOUNT_SOLD numeric(10,2) NOT NULL)
distributed by (prod_id,cust_id,time_id,channel_id,promo_id);
例子二
CREATE TABLE SALES
(PROD_ID numeric NOT NULL ,
这样,我们在设计应用上可以获得相当的灵活性。比如经常需要更新的数据,或者较小的维度数据,应该使用普通堆积表存储。下面是两个创建普通堆积表的例子。
例子一
CREATE TABLE SALES
(PROD_ID numeric NOT NULL ,
CUST_ID numeric NOT NULL ,
PROMO_ID numeric NOT NULL ,
QUANTITY_SOLD numeric(10,2) NOT NULL ,
AMOUNT_SOLD numeric(10,2) NOT NULL)
WITH (appendonly=true,orientation=column,compresstype=QUICKLZ,COMPRESSLEVEL=1)
CHANNEL_ID numeric NOT NULL ,
PROMO_ID numeric NOT NULL ,
QUANTITY_SOLD numeric(10,2) NOT NULL ,

一个GP数据操作范例

一个GP数据操作范例
好了,继续做下面的实验
使用os用户bonc用户启动gpfdist 服务
nohup gpfdist -d /data/etl_data -p 8082 -l /home/bonc/gpfdist.log&
使用gp库用户user1在bi_ods_all库下创建只读外部表
drop external table if exists stage.ts_mytest_r_external;
$body$
declare
v_schemaname varchar(40) := 'stage'; --这个东西没有使用到,纯粹无聊
begin
--清空表
EXECUTE 'TRUNCATE TABLE stage.ts_mytest;';
--进数据
insert into stage.ts_mytest(caa,cbb,ccc,cdd) select caa,cbb,ccc,cdd from stage.ts_mytest_r_external;
【在虚拟机上实验数据导入导出】
#20130104 黄春宝编写
#gpadmin用户是greenplum的超级用户
gp启动:
切换到gpadmin用户下,执行
gpstart
gp关闭:
在gpadmin用户下,执行
gpstart
【注意】
1、每次关闭虚拟机之前一定要先执行gpstop关闭gp。
bi_ods_all=> \q
步骤4、授权用户使用外部表
[gpadmin@mdw gpseg-1]$ psql -d bi_ods_all -U gpadmin -h 192.168.170.180 <<--使用gpadmin用户来授权给用户使用外部表

greenplum 表的类型

greenplum 表的类型

greenplum 表的类型Greenplum是一个非常强大的大数据平台,它专门用于处理海量的数据,因此在使用Greenplum时需要清楚其内部表的类型。

以下是有关Greenplum表类型的详细信息:1. 临时表(Temporary tables)临时表可以在会话期间存储临时数据,因此只对当前会话可见。

当会话结束时,临时表将被自动删除。

2. 外部表(External tables)外部表通常用于访问外部数据来源,如HDFS、Amazon S3等。

这些表不存储任何数据,只提供数据的访问路径。

3. 分片表(Distributed tables)分片表是Greenplum的核心特性之一。

它将数据分成多个片段,存储在多个不同的节点上。

这种分布式存储方式可以显著提高查询性能。

4. 分区表(Partitioned tables)分区表将数据分成多个分区(也称为分片),但不同于分片表的是,这些分区是依据特定的分区键值来进行分割。

分区表通常用于按时间或地理位置进行分割的大量数据。

5. 内存表(Memory tables)内存表将数据存储在Greenplum的共享内存中,这些表的查询速度非常快,可以极大地提高查询性能。

但是,由于内存容量有限,因此内存表对可用内存非常敏感。

6. 多版本表(Multiversion tables)多版本表是一种特殊的表类型,可以避免并发读写之间的冲突。

它为每个修改的行创建一个新版本,从而一次可以同时读多个版本的数据。

7. 分片事务表(Distributed transaction tables)分片事务表是一种支持分布式事务的表类型。

它可以保证跨多个节点的事务的原子性性,保持数据的一致性。

8. 衍生表(Derived tables)衍生表通常是从其他表中导出数据而生成的临时表。

这些表的数据可以从内存中获取,也可以从磁盘中读取。

总的来说,Greenplum支持多种类型的表,每种类型的表都有其适用的情况。

greenplum 语法

greenplum 语法

greenplum 语法Greenplum是一个分布式数据库管理系统,它支持SQL语言进行数据的查询、插入、更新和删除等操作。

本文将介绍Greenplum的基本语法和常用操作。

一、基本语法1. 创建数据库CREATE DATABASE dbname;2. 删除数据库DROP DATABASE dbname;3. 连接数据库c dbname;4. 创建表格CREATE TABLE tablename (column1 datatype,column2 datatype,column3 datatype,.....);5. 删除表格DROP TABLE tablename;6. 插入数据INSERT INTO tablename (column1, column2, column3, ....)VALUES (value1, value2, value3, .....);7. 查询数据SELECT column1, column2, ....FROM tablenameWHERE condition;8. 更新数据UPDATE tablenameSET column1 = value1, column2 = value2, ....WHERE condition;9. 删除数据DELETE FROM tablenameWHERE condition;二、常用操作1. 聚合函数聚合函数用于对数据进行计算,包括SUM、AVG、COUNT、MAX和MIN等。

SELECT SUM(column) FROM tablename;2. 排序排序用于对数据进行排序,包括ASC(升序)和DESC(降序)。

SELECT column1, column2, ....FROM tablenameORDER BY column1 ASC;3. 分组分组用于将数据按照某个字段进行分组,可以配合聚合函数进行计算。

SELECT column1, SUM(column2)FROM tablenameGROUP BY column1;4. 联结联结用于将两个或多个表格中的数据进行联合。

greenplum sql语句解析过程

greenplum sql语句解析过程

greenplum sql语句解析过程Greenplum是一个基于PostgreSQL的大规模并行处理(MPP)数据库系统。

它针对大规模数据集和高并发查询进行了优化,提供了快速的并行计算和分布式存储能力。

在Greenplum中,SQL语句的执行过程如下:1.语法解析:首先,Greenplum会对输入的SQL进行语法解析,以确定SQL语句的结构和语义,包括确定查询的类型(SELECT/INSERT/UPDATE等)以及语句中的各种元素(表、列、操作符等)。

2.查询优化:一旦语法解析完成,Greenplum会对查询进行优化,以确定最佳的查询计划。

查询优化器会根据查询的复杂性、数据大小、统计信息等因素,尽量选择最有效的执行计划来执行查询。

3.执行计划生成:查询优化器会根据查询的特性和环境,生成一个执行计划,该执行计划是一颗逻辑树,表示查询的各个步骤和操作的顺序。

执行计划由一系列的关系运算符组成,如表扫描、连接、聚合等。

4.数据分发和并行执行:在执行计划生成后,Greenplum会根据并行度和数据分布等信息,将数据分布到各个分布式节点上,并在所有节点上并行执行各个查询计划的操作。

每个节点负责处理自己分配到的数据块,计算部分查询结果。

5.结果合并:在所有节点上执行完成后,各个节点将各自的结果返回给主节点,并通过联合操作将结果合并成一个完整的结果集。

这个过程中可能涉及数据传输和排序等操作。

6.结果返回:最后,Greenplum将合并后的结果返回给客户端。

除了以上基本的执行过程,Greenplum还提供了一些拓展功能和特性,包括:1.数据分片和数据分布:为了实现高并发和高吞吐量,Greenplum 采用了数据分片和数据分布的方式,将数据分散存储在各个节点上。

这样可以实现并行查询和计算。

2.并行加载和导出:Greenplum支持并行加载和导出数据,以提高数据迁移和数据导入导出的效率。

3.分区表和分区索引:Greenplum支持表和索引的分区,可以将大表分割成多个小表,将索引分散在各个节点上,提高查询性能和管理效率。

greenplum sql语法

greenplum sql语法

Greenplum SQL语法一、概述Greenplum是一个基于开源的大数据分析平台,它利用并行处理和分布式存储技术,提供了一套强大的SQL语法来处理大规模数据。

本文将深入介绍Greenplum SQL语法的各个方面,包括数据类型、查询语句、表操作、函数、索引等内容。

二、数据类型在Greenplum中,支持各种常见的数据类型,包括整型、浮点型、字符型、日期时间型等。

以下是一些常用的数据类型示例:1.整型:INT, SMALLINT, BIGINT2.浮点型:FLOAT4, FLOAT83.字符型:VARCHAR, CHAR4.日期时间型:DATE, TIMESTAMP三、查询语句Greenplum支持标准的SQL查询语句,包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY等。

以下是一些常用的查询语句示例:1.简单查询:SELECT * FROM table_name;2.条件查询:SELECT * FROM table_name WHERE condition;3.聚合查询:SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;4.排序查询:SELECT * FROM table_name ORDER BY column_name ASC;四、表操作在Greenplum中,可以通过SQL语句对表进行创建、修改和删除操作。

以下是一些常用的表操作示例:1.创建表:CREATE TABLE table_name (column1 data_type,column2 data_type,...);2.修改表:ALTER TABLE table_name ADD COLUMN column_name data_type;3.删除表:DROP TABLE table_name;五、函数Greenplum提供了丰富的内置函数,用于处理和转换数据。

greenplum 语法

greenplum 语法

greenplum 语法Greenplum是一种开源分布式关系数据库管理系统,它延续了关系数据库的传统,同时兼顾海量数据处理和并行计算的性能优势。

以下是一些Greenplum语法的中文介绍:1. 创建表在Greenplum中,可以使用CREATE TABLE语句创建新表。

例如:CREATE TABLE mytable (id INTEGER,name VARCHAR(50),age INTEGER);2. 插入数据使用INSERT语句可以将数据插入到表中。

例如:INSERT INTO mytable(id, name, age)VALUES(1, '张三', 30),(2, '李四', 25),(3, '王五', 40);3. 查询数据可以使用SELECT语句查询表中的数据。

例如:SELECT * FROM mytable;4. 更新数据使用UPDATE语句可以更新表中的数据。

例如:UPDATE mytableSET age = 35WHERE name = '张三';5. 删除数据使用DELETE语句可以删除表中的数据。

例如:DELETE FROM mytableWHERE age > 30;6. 创建索引使用CREATE INDEX语句创建索引,可以加快数据的检索速度。

例如:CREATE INDEX idx_name ON mytable(name);7. 连接表可以使用JOIN语句来连接多个表。

例如:SELECT *FROM mytableINNER JOIN yourtable ON mytable.id = yourtable.id;以上是Greenplum的一些基本语法,使用这些语法可以对数据库进行各种操作。

GreenPlum 使用指南

GreenPlum 使用指南

GreenPlum 使用指南连接数据库psql -d postgres集群部署1.安装依赖库所有节点执行# yum -y install rsync coreutils glib2 lrzsz sysstat e4fsprogs xfsprogs ntp readline-devel zlib zlib-devel openssl openssl-devel pam-devel libxml2-devel libxslt-devel python-devel tcl-devel gcc make smartmontools flex bison perl perl-devel perl-ExtUtils* OpenIPMI-tools openldap openldap-devel logrotate python-py gcc-c++ libevent-devel apr-devel libcurl-devel bzip2-devel libyaml-develeasy_install pippip install paramikopip install psutilpip install lockfile2.修改内核参数# vi /etc/sysctl.conf#dev_max_backlog = 2500->10000#add by langke install greenplumkernel.shmmni = 4096kernel.sem = 50100 64128000 50100 1280kernel.msgmni = 2048net.ipv4.conf.all.arp_filter = 1filter.ip_conntrack_max = 655360net.ipv4.tcp_keepalive_probes = 9net.ipv4.tcp_keepalive_intvl = 7vm.overcommit_memory = 2fs.file-max = 7672460fs.aio-max-nr = 1048576上面这个内核参数设置之后影响elasticsearch进程(进程自动退出,报OOM:Native memory allocation (mmap) failed to map 11314593792 bytes for committing reserved memory,可能是vm.overcommit_memory,参数影响)kernel.shmmni = 4096kernel.sem =250 32000 32 128kernel.msgmni = 32768net.ipv4.conf.all.arp_filter = 0net.ipv4.tcp_keepalive_probes = 9net.ipv4.tcp_keepalive_intvl = 75vm.overcommit_memory = 0fs.file-max = 7672460fs.aio-max-nr = 1048576# sysctl -p受内核参数影响kafka java客户端推送数据也受影响,soa_logs队列推送很慢,内核参数一直调整无效,最终迁移kafka节点:所以内核参数最好还是不要修改# rm -f /etc/security/limits.d/90-nproc.conf# vi /etc/security/limits.conf* soft nproc 204800* hard nproc 204800* soft memlock unlimited* hard memlock unlimited设置块设备预读大小/sbin/blockdev --setra 16384 /dev/sda1/sbin/blockdev --setra 16384 /dev/sdb1/sbin/blockdev --setra 16384 /dev/sdc1/sbin/blockdev --setra 16384 /dev/sdd13.初始化安装环境#切换到hadoop用户su hadoopmaster节点:mkdir -p /data/disk1/gp/masterchown -R hadoop /data/disk1/gp/masterchmod 700 /data/disk1/gp/master所有segment 节点:mkdir -p /data/disk1/gp/datamkdir -p /data/disk2/gp/datamkdir -p /data/disk3/gp/datamkdir -p /data/disk4/gp/datamkdir -p /data/disk1/gp/mirrormkdir -p /data/disk2/gp/mirrormkdir -p /data/disk3/gp/mirrormkdir -p /data/disk4/gp/mirrorchown -R hadoop /data/disk1/gp/datachmod -R 700 /data/disk1/gp/data4.安装:./greenplum-db-4.3.9.1-build-1-rhel5-x86_64.bin安装到/opt/17173_install/greenplum-db-4.3.9.1安装完成cd greenplum-db/bin./pg_configcd ..cat greenplum_path.sh添加到用户的环境变量cat greenplum_path.sh >> ~/.bash_profile. ~/.bash_profile创建主机文件,包括所有节点以及主节点本身vi hostsea2sea3sea4sea5sea6交换KEY,master 访问所有的segment不需要输入密码,master pub拷贝到所有的segment authorized_keys,安装过hadoop可以略过gpssh-exkeys -f ./host安装软件到segment hostsgpseginstall -f ./host -u hadoop5.初始化数据库配置文件cp docs/cli_help/gpconfigs/gpinitsystem_config ./chmod 644 ./gpinitsystem_configvi ./gpinitsystem_configdeclare -a DATA_DIRECTORY=(/data/disk1/gp/data /data/disk2/gp/data/data/disk3/gp/data /data/disk4/gp/data)MASTER_HOSTNAME=sea6MASTER_DIRECTORY=/data/disk1/gp/masterMIRROR_PORT_BASE=50000REPLICATION_PORT_BASE=41000MIRROR_REPLICATION_PORT_BASE=51000declare -a MIRROR_DATA_DIRECTORY=(/data/disk1/gp/mirror/data/disk2/gp/mirror /data/disk3/gp/mirror /data/disk4/gp/mirror) DATABASE_NAME=seaMACHINE_LIST_FILE=/opt/17173_install/greenplum-db/host_segment编辑主机文件,不要包含master, standby,除非master,standby节点也需要当segment node使用.vi host_segmentsea2sea3sea4sea5sea6初始化数据库gpinitsystem -c ./gpinitsystem_config6.增加standby一个gp集群只有一个master肯定会让人不放心,还好有备用,当master宕掉后,会自动启用standby作为master,下面来看一下standby怎么添加在standby服务器上执行,sea5作为standbymkdir /data/disk1/gp/masterchown hadoop /data/disk1/gp/master在master服务器上执行gpinitstandby -s sea5中间输入一次Y7.增加mirrormirror就是镜像,也叫数据备份。

greenplum 外部表语法

greenplum 外部表语法

greenplum 外部表语法English Answer.External Table Syntax.External tables in Greenplum are used to access datathat is stored outside of the Greenplum database. This data can be in a variety of formats, including CSV, parquet, and JSON. External tables can be used to query data from other databases, Hadoop file systems, or cloud storage services.The syntax for creating an external table is as follows:CREATE EXTERNAL TABLE [table_name] (。

[column_name] [data_type] [constraints],。

...)。

LOCATION '[location]'。

FORMAT '[format]'。

[OPTIONS (。

[option_name] '[option_value]',。

...)]The following is a breakdown of the syntax:[table_name] is the name of the external table.[column_name] is the name of a column in the external table.[data_type] is the data type of the column.[constraints] are any constraints that should be applied to the column.[location] is the location of the data that is being accessed. The location can be a file path, a database table, or a Hadoop file system.[format] is the format of the data that is being accessed. The format can be CSV, parquet, or JSON.[OPTIONS] are optional settings that can be used to control the behavior of the external table.Example:The following example creates an external table named`sales` that accesses data from a CSV file located at`/data/sales.csv`:CREATE EXTERNAL TABLE sales (。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
35(4 rows)我们增加一个文件看看如何同时读取
cp了e1.txt:[gpadmin@o564gtser1
gtlions 181002 keven
keyte 321004 leon.lee 351001
keven 191003 keyte 321004
|来分割记录:[gpadmin@o564gtser1
CREATE
id
name | age------+----------+----- 1001 | gtlions | 18
| 19 1003 | keyte | 32 1004 |
64186/gpfdist
用户在操作时不能操作root用户的文件夹和文件,
ll查看文件夹和文件属于哪个用户;chown -R
文件名;修改文件的用户和用户组 -R递
[gpadmin@o564gtser1 gpfdist]$ jobs[1]+ Running
上面我手工启动了
gpfdist服务器,目录是/home/gpadmin/gpfdist,端口
,日志文件是/home/gpadmin/gpfdist/gpfdist.log,将下
e1.txt,并手工输入一些记录,
'gtlions'
'keven' 191003 'keyte' 321004
我们发现name字段貌似存在了一点问题:多了
重新读取下就ok了:gtlions=# select * from e1; id
name | age------+----------+----- 1001 | gtlions | 18
| 19 1003 | keyte | 32 1004 |
External
提示在第4行有错误的输入格式,其实第2行也
gtlions=# drop external table e1_2;DROP
id | name
| 18 1002 |
19 1003 | keyte | 32 | leon.lee | 35(4 rows)
|
4 | | value
|
4 | | value
|
4 | | value
还有一种特殊的格
gtlions=# create
CREATE EXTERNAL
gpfdist、gpfdists、file、
,gpfdists只是gpfdist的加密升级版,而且在使用上
协议的外部表,这个程序在master安装完后自带就
在$GPHOME/bin目录下,在需要的时候手工启动,
copy到别的机器上然后启动就
7.1.0.
几个常用的参数:-d 指
-p 指定端口-l 指定日志文件[gpadmin@o564gtser1
Error table "err_e1_4" does not exist. Auto
id | name | age |
18 | 1002 |
19 | note2 1003 | keyte | 32 |(3 rows)提示我们有数
err_e1_4,注意这个表对应的外部表每次查询
35(4 rows)只是很疑惑的是为什么null设置默认
~~!!!!!接下来看下逗号分割:
id | name
| 18 1002 |
19 1003 | keyte | 32 1004 | leon.lee | 35(4 rows)
id | name | age------+----------+----- 1001 |
35
创建外部表e1gtlions=#
CREATE EXTERNAL TABLE--读取外部表
gtlions=# select * from e1; id | name |
| 18 1002 |
| 19 1003 | 'keyte' | 32 1004 | 'leon.lee' |
35由于外部表无法重新定义位置和格式信
gtlions=# create external
id | name | age------+----------+----- 1001 |
| 18 1002 | keven | 19 1003 | keyte |
id | name |
| 18
| 19 | note2 1003 | keyte | 32 |
13 | note4(4 rows)可以看到和普通的
表一样可以直接操作表结构的定义。再来看异常的处
[gpadmin@o564gtser1 gpfdist]$ cat
【测试gpfdist服饰是否开启:wget
端口后面的目录默认是从
启动的目录开始的不是从 / 根目录开始netstat
| grep 8001{查看端口监听状况}正常显示:tcp
0 :::8001 :::*
e1_5;
gp_external_max_segs,用于设置可以有多少个
-s
: gp_external_max_segsMaster
rawdata

|
1 | |
gtlions=# select * from
cmdtime | relname |
| linenum |
errmsg
外部表操作
本文将首先测试使用外部表的方式进行加载和卸载数
-external tables,分为只读readable和只写
两种类别,而每种又可以分为常规regular和web
,只写外部表只能insert。只读的常规regular和web
和oracle当
oracle提供了更多中的协议方式,
当中只有平面文件file这种协议,而gp中提供了以下
35 1001 | gtlions | 18 1002 | keven
19 1003 | keyte | 32 1004 | leon.lee | 35(8 rows)
C通配符的,接下里我们看
text,
text用的是tab分隔符,我们将尝试使用别的分隔符,
|、空格、逗号、星号等等来分割的记录,还有空值的情
| 18 1002 | | 19 1003 | keyte |
35(4 rows)我们可以看到这2个表是一
csv,其实我们都知道默认的csv是用逗号分割的。接下
note的列:[gpadmin@o564gtser1
(seg0 slice1
External table
首先我们看下空值的情况如何处理,来看下这样的情况:
gtlions
191003 keyte 32
35第2行和第4行分别有空值的列,我们
gtlions=# create external table e1_2(id
invalid input syntax for integer: "" (seg1
相关文档
最新文档