Greenplum操作
程序员文章站
2024-03-22 10:20:29
...
1. 管理命令
2.1 数据库启动
$ gpstart [-a|-m]
# -a: 直接启动,不提示终端用户输入确认
# -m: 只启动master实例,主要是故障处理时使用
2.2 数据库停止
$ gpstop [-a|-m|-f|-u]
# -a: 直接停止,不提示终端用户输入确认
# -m: 只停止master实例
# -f: 停止数据库,中断所有数据库连接,回滚正在运行的事务
# -u: 不停止数据,只加载pg_hba.conf和postgresql.conf中的运行时参数。
2.3 查看数据分布
select gp_segment_id, count(1) from tablename group by 1;
2.4 收集统计信息,回收空间
定期使用vacuum analyze tablename收集统计信息,回收空间。尤其是大数据量删除或导入后。
2.5 实例恢复
通过gpstate或gp_segment_configuration发现实例down掉,可以用gprecoverseg启动down掉的实例。
2. SQL
数据库、表名、结构
# 通过命令行查询
\d 数据库 —— 得到所有表的名字
\d 表名 —— 得到表结构
# 通过SQL语句查询
"select * from pg_tables" —— 得到当前db中所有表的信息(这里pg_tables是系统视图)
"select tablename from pg_tables where schemaname='public'" —— 得到所有用户自定义表的名字(这里"tablename"字段是表的名字,"schemaname"是schema的名字。用户自定义的表,如果未经特殊处理,默认都是放在名为public的schema下)
执行计划
explain [analyze] sql
3. 流处理
kafka(json) -> greenplum
安装扩展包
# 登录对应数据库
$ psql -d postgres
postgres=# CREATE EXTENSION gpss;
Yaml配置文件
$ vi ods_mac_track.yaml
DATABASE: bigdataDB
USER: gpadmin
HOST: host106
PORT: 5432
KAFKA:
INPUT:
SOURCE:
BROKERS: host106:9092,host107:9092,host108:9092
TOPIC: mac_data
COLUMNS:
- NAME: jdata
TYPE: json
FORMAT: json
ERROR_LIMIT: 1000
OUTPUT:
TABLE: ods_mac_track
MAPPING:
- NAME: track_id
EXPRESSION: (jdata->>'track_id')::text
- NAME: mac
EXPRESSION: (jdata->>'mac')::text
- NAME: source
EXPRESSION: (jdata->>'source')::int4
- NAME: service_code
EXPRESSION: (jdata->>'service_code')::text
- NAME: geo_point
EXPRESSION: (jdata->>'geo_point')::point
- NAME: geo_hash7
EXPRESSION: (jdata->>'geo_hash7')::text
- NAME: geo_md5
EXPRESSION: (jdata->>'geo_md5')::text
- NAME: start_time
EXPRESSION: (jdata->>'start_time')::timestamp
- NAME: end_time
EXPRESSION: (jdata->>'end_time')::timestamp
- NAME: phone
EXPRESSION: (jdata->>'phone')::text
- NAME: stay_time
EXPRESSION: (jdata->>'stay_time')::int8
COMMIT:
MAX_ROW: 10000
启动
gpkafka load [--quit-at-eof] [{--force-reset-earliest | --force-reset-latest}] [--debug-port portnum] [-v | --verbose] config.yaml
gpkafka load {-h | --help}
$ gpkafka load ods_mac_track.yaml
上一篇: 存储过程中参数名和表字段名相同的问题
下一篇: C++宏定义中#和##的用法