博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何把数据从 Mysql 导入到 Greenplum
阅读量:6983 次
发布时间:2019-06-27

本文共 1407 字,大约阅读时间需要 4 分钟。

本文介绍给大家几个把数据从 Mysql 导入到 Greenplum 的方法

自阿里云推出 Greenplum 服务以来,很多公测用户希望把自己在 Mysql 中的数据放到 Greenplum 用于进行数据分析。而且很多客户的数据量相当大。在这里我向大家提供几种经过验证的向云上 Greenplum 导入大量数据的方法。

一:使用 COPY 命令导入数据

特点:1. Greenplum 提供的原生数据导入方法。2. 需要先把数据从 Mysql 导出成文本文件。3. 适合少量数据上云,导入过程中数据会经过 Greenplum 的 Master 节点,所以性能不会特别理想。

二: 通过阿里云开源的工具 mysql2pgsql 导入

特点:1. Mysql 导入 Greenplum DB 到 DB 不落地的导入方案,简单实用。2. 推荐购买 ECS,和在 ECS 上使用该工具,特别适合从 RDS Mysql/ECS 自建实例导入数据。3. 该工具已经开源了代码,各位可以定制自己的需求。4. 该工具写入端也会走 Master 节点,所以性能不会特别理想。

三: 通过 OSS 导入大量数据

该方法的流程如下:1. 购买和开通阿里云 ECS,OSS 服务。2. 在 ECS 上使用 ossfs 包挂载购买的 oss 为本地文件系统。3. 在 ECS 上安装 mysql 二进制RPM。4. 使用 mysqldump 命令流式获取源库中对应表中的数据,并增量写入到 oss 中。5. 使用 gp_oss_ext 在 Greenplum 中创建 oss 外部表,并行的将数据导入到 Greenplum 中。

mysqldump 导出举例:

nohup /home/mysql/bin/mysqldump -h192.168.1.1 -P3306 -utest -ptest testdb testtab | sed 's/),(/\n/g;s/NULL//g' | split -l 1000000 - /ossdata/testtab/data. 1>/home/test/testtab.out 2>&1 &

上面的举例有几个要点,大家可以根据自己的需求定制

1. 用户可以使用 mysqldump 导出数据,也可以使用 mysql 命令,如果数据量较大,建议使用 --quick 参数,避免内存不足。2. mysqldump 跟上的 sed 命令是为了格式化导出的数据,以符合 Greenplum 导入的格式规范,大家可以根据需求定制这一项。3. split 也是一个比较关键的点。它用于定制切割和存放文件的规则。原因有以下两点    3.1 oss 上普通文件有大小限制    3.2 gp_oss_ext 并行导入 oss 上的数据是以文件为单位并发的,推荐在 OSS 上使用虚拟文件夹存放对应一个表的所有数据。

从 OSS 装载数据的特点:

1. 这是一个应对大量数据导入到 Greenplum 的方法,可以轻松从 Mysql 导入上百G,甚至上T的数据到 Greenplum。2. 不需要很大的缓冲临时空间,数据是流式写入到 OSS 的。3. 导出和导入时以表为单位进行的,使用者可以并发操作多个表以提高整体的性能。4. 该方法的性能远好于前两种,导入到云上 Greenplum 规格越大,性能也会越好。

转载地址:http://gxxpl.baihongyu.com/

你可能感兴趣的文章
JS笔记(20): JS中的同步编程和异步编程
查看>>
那几个题(没懂的地方留言)
查看>>
如何改变UITableViewCell的选中样式(颜色)?storyboard上cell的selection不可用?
查看>>
Ubuntu 怎么增加根目录 大小
查看>>
Spring Cloud微服务分布式云架构—集成项目简介
查看>>
盒马鲜生颠覆传统生鲜市场的胜算几何?
查看>>
【Node】常用基础 API 整理
查看>>
传神成进博会唯一指定智能翻译硬件提供商 力助无障碍沟通
查看>>
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
查看>>
Java程序员须知:分布式微服务为什么很难?
查看>>
SQLServer之创建唯一聚集索引
查看>>
好程序员web前端技术之CSS3过渡
查看>>
java B2B2C源码电子商务平台 - Zuul回退机制
查看>>
记录Docker in Docker 安装(CentOS7)
查看>>
简单的写一个发布订阅器
查看>>
重学前端-js的类型问题
查看>>
Function类型
查看>>
Python学习
查看>>
ES6之let和const
查看>>
关于跨域
查看>>