• 沒有找到結果。

● 选择MRS服务与集群节点处于联网状态,导出速率会受网络带宽影响。

● 支持数据文件格式:ORC。

导出文件命名规则

GaussDB(DWS)导出ORC数据的文件命名规则如下:

1. 导出至MRS(HDFS):从DN节点导出数据时,以segment的格式存储在HDFS 中,文件命名规则为“mpp_数据库名_模式名_表名称_节点名称_n.orc”。这里 的“n”是从0开始按照自然数0、1、2、3递增。

2. 对于来自不同集群或不同数据库的数据,建议用户可以将数据导出到不同路径 下。ORC格式文件大小最大为128M,Stripe大小最大为64M。

3. 导出完成后会生成_SUCCESS标记文件。

4.2.2 规划导出数据

MRS导出支持的数据类型请参见表3-6。

HDFS导出数据准备:HDFS导出准备即配置MRS,具体信息可参考《MapReduce服务 用户指南》。

4.2.3 创建外部服务器

HDFS创建外部服务器请参见手动创建外部服务器。

4.2.4 创建外表

当完成创建外部服务器后,在GaussDB(DWS)数据库中创建一个HDFS只写外表,用来 访问存储在HDFS上的数据。此外表是只写的,只能用于导出操作。

创建外表的语法格式如下,详细的描述请参见CREATE FOREIGN TABLE (SQL on Hadoop or OBS)。

CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [ { column_name type_name

[ { [CONSTRAINT constraint_name] NULL | [CONSTRAINT constraint_name] NOT NULL | column_constraint [...]} ] |

table_constraint [, ...]} [, ...] ] ) SERVER dfs_server

OPTIONS ( { option_name ' value ' } [, ...] ) [ {WRITE ONLY }]

DISTRIBUTE BY {ROUNDROBIN | REPLICATION}

[ PARTITION BY ( column_name ) [ AUTOMAPPED ] ] ;

例如,创建一个名为"product_info_ext_obs"的外表,对语法中的参数按如下描述进行 设置:

table_name 外表的表名。

● 表字段定义

column_name:外表中的字段名。

type_name:字段的数据类型。

多个字段用“,”隔开。

SERVER dfs_server

外表的外部服务器名称,这个server必须存在。外表通过设置外部服务器连接 OBS/HDFS读取数据。

此处应参考创建外部服务器中创建的外部服务器名称填写。

OPTIONS 参数

用于指定外表数据的各类参数,关键参数如下所示。

– “format”:表示导出的数据文件格式,支持“orc”格式。

– “foldername”:外表中数据源文件目录,即表数据目录在HDFS文件系统 上对应的文件目录。此选项对WRITE ONLY外表为必选项,对READ ONLY外 表为可选项。

– “encoding”:外表中数据源文件的编码格式名称,缺省为utf8。

– filesize

指定WRITE ONLY外表的文件大小。此选项为可选项,不指定该选项默认分 布式文件系统配置中文件大小的配置值。此语法仅对WRITE ONLY的外表有 效。

取值范围:[1, 1024]的整数。

说明

filesize参数只对ORC格式的WRITE ONLY的HDFS外表有效。

– compression

指定ORC格式文件的压缩方式,此选项为可选项。此语法仅对WRITE ONLY 的外表有效。

取值范围:zlib,snappy,lz4。缺省值为snappy。

– version

指定ORC格式的版本号,此选项为可选项。此语法仅对WRITE ONLY的外表 有效。

取值范围:目前仅支持0.12。缺省值为0.12。

– dataencoding

在数据库编码与数据表的数据编码不一致时,该参数用于指定导出数据表的 数据编码。比如数据库编码为Latin-1,而导出的数据表中的数据为UTF-8编 码。此选项为可选项,如果不指定该选项,默认采用数据库编码。此语法仅 对HDFS的WRITE ONLY外表有效。

取值范围:该数据库编码支持转换的数据编码。

说明

dataencoding参数只对ORC格式的WRITE ONLY的HDFS外表有效。

● 语法中的其他参数

其他参数均为可选参数,用户可以根据自己的需求进行设置,在本例中我们不需 要设置。详细的描述请参见CREATE FOREIGN TABLE (SQL on Hadoop or OBS)。

根据以上信息,创建外表命令如下所示:

DROP FOREIGN TABLE IF EXISTS product_info_ext_obs;

---建立不包含分区列的HDFS外表,表关联的外部服务器为hdfs_server,表对应的HDFS服务上的文件格式 为‘orc’,HDFS上的数据存储路径为'/user/hive/warehouse/product_info_orc/'。

CREATE FOREIGN TABLE product_info_ext_obs ( product_price integer , product_id char(30) , product_time date , product_level char(10) , product_name varchar(200) , product_type1 varchar(20) , product_type2 char(10) , product_monthly_sales_cnt integer , product_comment_time date , product_comment_num integer ,

product_comment_content varchar(200)

) SERVER hdfs_server OPTIONS (

format 'orc',

foldername '/user/hive/warehouse/product_info_orc/', compression 'snappy',

version '0.12' ) Write Only;

4.2.5 执行导出

操作步骤

步骤1 执行数据导出。

INSERT INTO [foreign table 表名] SELECT * FROM [源表名];

说明

● 仅支持单个内表导出,不支持多表Join联合导出,不支持单表的聚集、排序、子查询、limit 等操作结果导出。

----结束

执行导出数据示例

● 示例1:将表product_info_output的数据通过外表product_info_output_ext导出 到数据文件中。

INSERT INTO product_info_output_ext SELECT * FROM product_info_output;

若出现以下类似信息,说明数据导出成功。

INSERT 0 10

● 示例2:通过条件过滤(WHERE product_price>500),向数据文件中导出部分数 据。INSERT INTO product_info_output_ext SELECT * FROM product_info_output WHERE product_price>500;

说明

对于特殊的数据类型如RAW类型,在导出之后是一个二进制文本,导入工具无法识别。需使用 RAWTOHEX()函数将其转换为16进制文本导出。

4.3 使用 GDS 导出数据到远端服务器

4.3.1 关于 GDS 并行导出

使用GDS工具将数据从数据库导出到普通文件系统中,适用于高并发、大量数据导出 的场景。

概述

通过外表导出数据:通过GDS外表设置的导出模式、导出数据格式等信息来指定待导 出的数据文件,利用多DN并行的方式,将数据从数据库导出到数据文件中,从而提高 整体导出性能。不支持直接导出文件到HDFS文件系统。

● CN只负责任务的规划及下发,把数据导出的工作交给了DN,释放了CN的资源,

使其有能力处理外部请求。

● 通过让各个DN都参与数据导出,充分利用各个设备的计算能力及网络带宽。

4-3 通过外表导出数据

相关概念

● 数据文件:存储有数据的TEXT、CSV或FIXED文件。文件中保存的是从 GaussDB(DWS)数据库导出的数据。

● 外表:用于规划导出数据文件的数据文件格式、存放位置、编码格式等信息。

GDS:数据服务工具。在导出数据时,需要将此工具部署到数据文件所在的服务 器上,使DN可以通过该工具导出数据。

● 表:数据库中的表,包括行存表和列存表。数据文件中的数据从这些表中导出。

Remote导出模式:将集群中的业务数据导出到集群之外的主机上。