千家信息网

greenplum中怎么使用gpfdist与外部表高效导入数据

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"greenplum中怎么使用gpfdist与外部表高效导入数据"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家
千家信息网最后更新 2025年12月02日greenplum中怎么使用gpfdist与外部表高效导入数据

本篇内容介绍了"greenplum中怎么使用gpfdist与外部表高效导入数据"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

greenplum作为OLAP分析型软件,自然避免不了从外部数据库加载大量的数据,然而传统的ETL数据传输方法(select=>insert)到GP需要经过GP的单点master,效率非常低。

下面介绍外部表用gpfdist快速导入数据:

普通外部表和可写外部表区别:

1、普通外部表只能select,可写外部表只能insert

2、可写外部表没有错误表

3、可写外部表可以指定分布键,如果不指定,默认随机分布;普通外部表只能随机分布

gpfdist优势:

1、直接由segment并发加载

2、直接加载数据文件,并可读写(和选择的外部表类型有关)

3、默认数据随机分配,每个节点负载均衡(和选择的外部表类型有关)

示例:

1、启动gpfdist

安装完GP后,自带gpfdist文件,直接指定目录、端口等就能启动服务。如果需要独立的文件服务器,则需要在文件服务器上单独下载gpfdist使用

[gpadmin@gp-master ~]nohup /disk/GP/bin/gpfdist -p 8081 -d /disk/upload &

使用nohup &是起守护进程作用,不然执行启动服务的客户端关闭后,这个进程也会被关闭;指定端口8081,指定文件服务器目录/disk/upload

[gpadmin@gp-master ~]$ ps -ef|grep gpfdist

gpadmin 816 32606 0 17:08 pts/4 00:00:00 grep gpfdist

gpadmin 13036 1 0 Oct21 ? 00:00:44 /disk/GP/bin/gpfdist -p 8081 -d /disk/upload

2、创建普通外部表

CREATE EXTERNAL TABLE "ods"."order" (

"id" varchar(64),

"create_by" varchar(64),

"create_date" timestamp,

"update_by" varchar(64),

"update_date" timestamp,

"del_flag" char(1),

"user_id" varchar(64),

"user_name" varchar(64),

"account_id" varchar(64),

"equ_def_id" varchar(64),

"amount_in" numeric(20,2),

"amount_in_money" numeric(20,2),

"amount_out" numeric(20,2),

"amount_out_money" numeric(20,2),

"fee" numeric(20,2),

"fee_discount" numeric(20,2),

"money" numeric(20,2),

"actual_pay_money" numeric(20,2),

"discount_money" numeric(20,2),

"pay_time" timestamp,

"order_type" varchar(16),

"status" varchar(64),

"rel_biz_type" varchar(64),

"rel_biz_id" varchar(64),

"equ_agreement" varchar(64),

"remarks" varchar(100),

"transaction_type" varchar(1),

"pay_stop_date" timestamp,

"stop_time" timestamp,

"bid_method" varchar(64),

"profit_fee_rate" numeric(20,2),

"quit_charge_rate" numeric(20,2),

"return_tb" numeric(20,2),

"last_order_id" varchar(64),

"root_order_id" varchar(64),

"invest_name_for_me" varchar(64),

"invest_name_for_buyer" varchar(64),

"invest_start_time" timestamp,

"available_amount" numeric(20,2),

"surplus_days" int4,

"transferable_flag" varchar(64),

"trc_order_id" varchar(64)

) LOCATION ('gpfdist://gp-master:8081/order.csv') format 'csv' (DELIMITER ';');

注意有几个坑:

1、这个实验数据order.csv是生产环境mysql的测试数据,表中有时间类型字段,如果从线上数据导出到txt文本,这个时候你的时间格式就变成了varchar,再导入到GP的时间类型字段时候会报格式错误,所以尽量导出为csv格式的文本

2、指定gpfdist信息:LOCATION ('gpfdist://文件服务器主机名或IP:gpfdist端口/加载文件') format '文件格式' (DELIMITER '分隔字符')

3、从线上数据导出到文本,不要行头,不要封闭符,只需要分隔字符

测试数据90W记录的数据,gpfdist加载数据在秒级别,效率很高

创建可写外部表

CREATE WRITABLE EXTERNAL TABLE "ods"."order1" (

"id" varchar(64),

"create_by" varchar(64),

"create_date" timestamp,

"update_by" varchar(64),

"update_date" timestamp,

"del_flag" char(1),

"user_id" varchar(64),

"user_name" varchar(64),

"account_id" varchar(64),

"equ_def_id" varchar(64),

"amount_in" numeric(20,2),

"amount_in_money" numeric(20,2),

"amount_out" numeric(20,2),

"amount_out_money" numeric(20,2),

"fee" numeric(20,2),

"fee_discount" numeric(20,2),

"money" numeric(20,2),

"actual_pay_money" numeric(20,2),

"discount_money" numeric(20,2),

"pay_time" timestamp,

"order_type" varchar(16),

"status" varchar(64),

"rel_biz_type" varchar(64),

"rel_biz_id" varchar(64),

"equ_agreement" varchar(64),

"remarks" varchar(100),

"transaction_type" varchar(1),

"pay_stop_date" timestamp,

"stop_time" timestamp,

"bid_method" varchar(64),

"profit_fee_rate" numeric(20,2),

"quit_charge_rate" numeric(20,2),

"return_tb" numeric(20,2),

"last_order_id" varchar(64),

"root_order_id" varchar(64),

"invest_name_for_me" varchar(64),

"invest_name_for_buyer" varchar(64),

"invest_start_time" timestamp,

"available_amount" numeric(20,2),

"surplus_days" int4,

"transferable_flag" varchar(64),

"trc_order_id" varchar(64)

) LOCATION ('gpfdist://gp-master:8081/order1.csv') format 'CSV' (DELIMITER ';')

DISTRIBUTED BY (id);

"greenplum中怎么使用gpfdist与外部表高效导入数据"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

数据 文件 服务 普通 服务器 格式 类型 文本 时间 端口 有关 内容 字段 字符 效率 时候 更多 目录 知识 进程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京国家网络安全产业园最新消息 迁安市网络安全考核评价办法 怎样采集电商大数据库 爱迪尔门锁数据库在哪个文件 网络安全保护等级3级证书 物联网需要什么配置的云服务器 全球网络安全大学排名 平面设计和软件开发哪个好学 韶关软件开发培训班 普陀区信息软件开发诚信服务 怎么看魔兽服务器状态 软件开发语言是怎么产生的 阿里云服务器上安装了软件 软件开发pf什么意思 web前端获取数据交给数据库 2020网络安全展会时间 软件开发竞争是什么 抚州个人服务器找哪家 联想服务器引导盘装系统 教师工资数据库管理系统案例 arcgis样式数据库 物联网需要什么配置的云服务器 规模大的视频会议软件开发 数据库的多表查询实验总结与分析 东北林业数据库系统期末题 国际民航网络安全吗 万维网服务器ip地址 棋牌赌博软件开发 和平精英怎么看服务器分布 数模与软件开发有关系吗
0