从 oss 装载数据到 GreenPlum

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: gpossext 在阿里云上,支持通过 gpossext 并行装载数据到 GPDB 中 gpossext 语法 CREATE [READABLE] EXTERNAL TABLE tablename ( columnname datatype [, ...] | LIKE othertable

gpossext

在阿里云上,支持通过 gpossext 并行装载数据到 Greenplum 中

gpossext 语法

CREATE [READABLE] EXTERNAL TABLE tablename
( columnname datatype [, ...] | LIKE othertable )
LOCATION ('ossprotocol')
FORMAT '...'
[ ENCODING 'encoding' ]
[ LOG ERRORS ...]

ossprotocol:
   oss://oss_endpoint filepath=[folder/[folder/]...]/file_name 
    id=userossid key=userosskey bucket=ossbucket

ossprotocol:
   oss://oss_endpoint dir=[folder/[folder/]...]/file_name 
    id=userossid key=userosskey bucket=ossbucket

参数解释

ossprotocol 整个协议有6部分

1. 协议名,当然是 oss 

2. ossendpoint 参数,是内网访问oss的地址,也叫 host

3. id oss账号ID

4. key oss账号key

5. bucket ossbucket,需要创建 oss 账号后分配

6. filepath oss 中带路径的文件名,需要注意
  6.1 文件名包含文件路径,但不包含 bucket 名
  6.2 并行装载模式要求文件被均匀拆分为多个文件
  6.3 文件命名方式为 finame.x,x 要求从 1 开始,且是连续的
  6.4 例 filename.1 filename.2 filename.3 ...
  6.5 可以被导入的文件有 filename filename.1 filename.2 ...;其中1到N需要是连续的。
  6.6 为了最大化导入性能,建议拆分文件的个数是导入到的 Greenplum segment 个数的倍数

7. dir oss 中带路径的虚拟文件夹,需要注意
    7.1 dir指 oss 上的虚拟文件夹,它需要以 / 结尾
    7.2 该模式和 filepath 互斥,不能同时指定
    7.3 该模式会导入指定虚拟目录下的所有文件到 Greenplum,但不包括它子目录和子目录下的文件
    7.4 和 filepath 一样,该模式也是并行导入的,为了最大化导入性能,每个文件的大小需要尽量的均匀。
    7.5 和 filepath  不同,dir 下的文件没有命名要求

8. async 是否启用异步模式装载数据
    8.1 开启辅助线程从 oss 装载数据,加速导入性能
    8.2 默认情况下异步模式是打开的,如果需要关掉,可以使用参数 async = false 或 async = f
    8.3 异步模式和普通模式比,会消耗更多的硬件资源

gpossext 的其他参数兼容 Greenplum EXTERNAL TABLE 的原有语法,主要有

1. FORMAT 支持文件格式,支持 txt,csv 等

2. ENCODING 文件中数据的编码格式,如 utf8

3. LOG ERRORS 依然支持容错模式数据导入,通过制定该子句忽略掉导入中出错的数据

用例

# 创建 oss 外部表
create READABLE external table ossexample 
        (date text, time text, open float, high float,
        low float, volume int) 
        location('oss://oss-cn-hangzhou-zmf.aliyuncs.com
        filepath=osstest/example.csv id=XXX
        key=XXX bucket=testbucket') FORMAT 'csv'
        LOG ERRORS SEGMENT REJECT LIMIT 5;

# 创建堆表,数据就装载到这张表中
create table example
        (date text, time text, open float,
         high float, low float, volume int);

# 数据并行的从 ossexample 装载到 example 中。
insert into example select * from ossexample;

# 可以看到,每个 segment 都会参与工作。
# 他们并行的从 oss 拉取数据
# 然后通过 Redistribute Motion 分发给对应的 segment. 
# 每个 segment 再通过 insert 节点入库
explain insert into example select * from ossexample;
                                            QUERY PLAN                                            
--------------------------------------------------------------------------------------------------
 Insert (slice0; segments: 4)  (rows=250000 width=92)
   ->  Redistribute Motion 4:4  (slice1; segments: 4)  (cost=0.00..11000.00 rows=250000 width=92)
         Hash Key: ossexample.date
         ->  External Scan on ossexample  (cost=0.00..11000.00 rows=250000 width=92)
(4 rows)
        

gpossext 使用注意

gpossext 打开了 oss 到 Greenplum 的数据通道,用户可以把数据放到廉价的 oss 中,再导入到 Greenplum 中进行分析。使用需要注意

1. gpossext 中除了 ossprotocol,其他的部分和 Greenplum 相同。
2. 数据导入的性能和 Greenplum 集群的资源(CPU IO MEM NET)相关,也和 OSS 相关。
3. 为了保证数据导入的性能 ossendpoint Region 需要匹配 Greenplum 云上所在 Region,建议oss和Greenplum在同一个Region以获得最好的性能。相关信息请参考下面的链接。

参考链接

  1. oss endpiint 信息
  2. [oss help 页面] [2]
  3. [Greenplum EXTERNAL TABLE 手册] [3]
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
26天前
|
存储 关系型数据库 分布式数据库
PolarDB常见问题之PolarDB冷存数据到OSS之后恢复失败如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
4月前
|
存储 SQL 分布式计算
数据计算MaxCompute读取外部表(数据在oss gz压缩)速度非常慢,有什么方法可以提升效率么?
数据计算MaxCompute读取外部表(数据在oss gz压缩)速度非常慢,有什么方法可以提升效率么?
48 1
|
22天前
|
存储 API 开发工具
oss数据解密与下载
阿里云OSS提供服务器端加密(SSE-OSS/SSE-KMS)功能,保证静态数据安全。下载加密对象时,OSS自动解密并返回原始内容。确保下载请求者有相应权限,尤其是使用SSE-KMS时。可通过SDK、图形化工具或编程框架集成下载,发起请求时,OSS自动处理解密,客户端接收解密后的数据。权限、下载方式选择及请求发起是关键步骤。
9 1
|
3月前
|
SQL 存储 分布式计算
Hologres实时湖仓能力增强,挑战5分钟加速分析OSS数据
5分钟快速使用Hologres实时湖仓能力,无需移动数据,直接加速读取存储于数据湖OSS上的Hudi、Delta、Paimon等格式类型的数据
|
3月前
|
存储 对象存储 SQL
【获奖名单公示】Hologres实时湖仓分析挑战赛
5分钟快速使用Hologres实时湖仓能力,无需移动数据,直接加速读取存储于数据湖OSS上的Hudi、Delta、Paimon等格式类型的数据
【获奖名单公示】Hologres实时湖仓分析挑战赛
|
4月前
|
存储 监控 开发工具
oss储存数据
oss储存数据
90 1
|
4月前
|
存储 对象存储
OSS冷热数据分离
OSS冷热数据分离
|
5月前
|
存储 SQL 分布式计算
数据计算MaxCompute读取外部表(数据在oss gz压缩)速度非常慢,有什么方法可以提升效率么?
数据计算MaxCompute读取外部表(数据在oss gz压缩)速度非常慢,有什么方法可以提升效率么?
57 2
|
7月前
|
存储 文件存储 对象存储
对象存储OSS快速上手——数据上传
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何在对象存储OSS的控制台,进行简单的数据存、查、删等操作。
269 0
|
8月前
|
存储 对象存储 数据安全/隐私保护
oss数据托管
oss数据托管
105 1