GaussDB(DWS)数据库-导入导出篇


DWS外表

外表定义(Foregin table):是对外部数据源的描述,通过使用SQL接口提供访问外部数据的能力。
解决问题:实现数据的导入导出,访问其他DWS集群或者其他外部组件等,扩展了DWS对其他组件进行读写的能力。
使用原理:利用FDW(foreign data wrapper)机制。首先定义链接信息,之后创建外表,外表的创建是用于定义DWS数据库上对应其他数据源的表结构。
外表创建和管理,分为手动创建和自动创建:

  1. 手动创建如下:在普通表基础上,额外添加server和option信息,先建服务,再建外表。
    • server是数据库对象,通过create server创建,存储外部数据源访问和认证信息,用于外表如何找到目标数据。

    • 语法格式如下:

      1
      2
      3
      create server server_name 
      foreign data warpper fdw_name
      option();
  2. 权限控制:默认只有系统管理员有权限,如果其他人使用需要对foreign data wrapper 授权才能创建,授权语法如下:
    1
    grant usage on foreign data wrapper fdw_name to username;
  3. options:数据源定制描述,例如编码、压缩等,不同数据源不同外表差别大。
  4. 系统查询:通过pg_foreign_server和pg_foreign_table系统表查询创建的server和外表。
  5. 自动创建如下:
    • MRS/OBS数据源管理+Lakeformation元数据管理;
    • MRS/OBS数据源管理用于对接HDFS或者OBS,自动建server;
    • Lakeformaion元数据管理,自动建外表,使用外部元数据直接进行数据访问。

外表分类

功能分类:HDFS外表、OBS外表、GDS外表、DLI外表等。
server类型分类:

  1. dfs_fdw/hdfs_fdw外表:适应用于外部文件系统(HDFS/OBS)上的结构化数据查询。
  2. dist_fdw外表:适用于文件导入导出。
  3. gc_fdw外表:适用于协同分析。
  4. log_fdw外表:适用于dws内部使用,日志查询。
  5. file_fdw外表:访问服务器文件 。

GDS(Gauss Data Service)工具

定义:DWS提供的数据导入导出工具

适配场景:

  1. 数据迁移,同构异构集群数据迁移。
  2. 以文本数据作为来源的大数据量表导入
  3. 大数据量表导出
    支持导入和导出的文件格式:csv/text/binary/fixed(每行数据等长)

工具原理:
数据导入过程:GDS通过网络和数据库系统相连,CN负责任务规划和下发,GDS负责数据文件切分,然后分发给各个DN,各个DN节点负责数据并行导入,各DN收到数据分片后解析数据,根据表的分布列计算hash值并确定归属哪个DN,如果是自身就缓存到本地,否则就通过网络传给相应的DN.导出过程正好相反。
导入要点:

  1. 导入时,GDS数量<=DN数量。
  2. GDS导入时,服务器普通文件系统数据可以导入DWS数据库,HDFS文件系统数据暂时不可以导入DWS数据库。

导出要点:

  1. 按照导出目的地是否是集群内的主机,分为local模式和remote模式;目的地是集群节点所在主机上为local模式,否则为remote模式。
  2. 导出支持的数据文件格式:csv/text/fixed,单行数据大小需要<1GB
  3. 在local模式中,数据均匀切割并生成到集群指定文件夹下,需要占用集群磁盘空间。
  4. 在remote模式中,1个GDS同一时刻只为1个集群服务,多个GDS可以并发导出。和集群在同一内网的GDS,导出速度受网络带宽影响。

GDS导入操作:启动GDS服务>创建外表>执行导入>分析错误表
导入操作要点:

  1. GDS导入数据目录文件过多时,可以使用正则表达式指定外表的location,选择需要的导入文件
  2. 导入过程中的错误,分为数据格式和非数据格式两种错误。数据格式错误是指缺失或多出字段值、数据类型错误或者数据编码错误等。可以通过在创建外表时,设置参数“log into error_table_name”,将导入过程中的数据格式错位信息写入指定的错误信息表中。

GDS导出操作:启动GDS>创建外表>执行导出
导出操作要点:导出的文本命名格式为t1_foreign_output.data.

实时数仓

  1. Flink:分布式、流批一体、开源处理引擎。
  2. 用途:在无边界和有边界数据流上进行有状态计算。无边界数据流是指源源不断产生数据,数据流没有结束,类似于kafka消息流。有边界数据流是指有开始和结束的数据流,可以对所有数据做处理。有状态计算是指在流处理过程中,可以将中间状态保留,用于后续数据处理使用。
  3. Flink内容:组件+任务+API库
  4. Flink组件:
    • JobManager:负责分配任务、协调执行任务、协助检查点,并处理失败。
    • TaskManager:在集群中并行执行任务,管理任务状态和缓冲区。
    • Client:提交Flink作业,并与JobManager通讯。
  5. Flink任务:任务由多算子组成,每个算子设置各自的并行度任务
    • source+transformation+sink算子组成。
    • source:数据流起点,从外部系统读取数据并转换为Flink可处理的内部数据结构。
    • transformation:对数据流进行操作,转换/聚合/连接/分割数据
    • sink:数据流终点,将处理后的数据写入外部系统。
  6. Flink的API库:
    • DataStream API:提供转换操作符,用于构建流处理应用核心API。
    • Table API&SQL:提供声明式API,用类SQL方式查询流和批处理数据。
  1. 用途:可以通过Flink SQL实现从DWS中读写数据(包括增量读)
  2. 功能:
    • 批量读:将DWS中表作为数据源供Flink用于批读
    • 维流join:将DWS中表作为维表供Fink维流join(即用实时流和维表join)
    • 攒批写:将DWS中表作为结果表供Flink写入数据(一定时间一定量)
  3. Flink catalog:通过Flink catalog,实现Flink和DWS表相互映射。
  4. 语法说明:
    • Flink SQL中的表字段必须和DWS表中有对应字段
    • with参数设置中,connector需要指定dws, tableName需要指定为DWS对应表名。lookupAsync表示是否异步读取
    • 在Flink catalog中,with参数type需要指定为dws,base_url中不用带数据库名称。use catalog dws 表示使用新建catalog。show catalog表示查询所有catalog。可以直接查询数据库中的表信息,不需要在Flink中建映射表。

实时增量读取

  1. 原理:只对变化的数据进行读取,而不重新读取整个数据集。
    • 好处:提高处理效率,减少资源消耗
  2. 操作:DWS通过Binlog实现增量读取。对表做DML操作时,先进行双写,对应的DML记录到辅助表中,然后通过读取该辅助表来获取增量数据,实现数据同步和增量计算。
  3. Binlog表语法:用Binlog表作为源表供Flink实时读取。with参数中的binlog属性需要设置为true,binlogSlotName需要设置为自定义的槽位名。
  4. 注意要点:
    • DWS中只有Hstore和Hstore-opt表支持Binlog功能,表需要有主键且设置为enable_binlog = on
    • 如果多任务消费同一个表的Binlog数据,需要保证每个任务的binlogSlotName唯一。
    • 为达到最高读取速度,建议Flink任务并行度和DWS集群DN数设置一致。
    • 可以使用dws-flink-connector的sink能力来写入读取到的Binlog数据,需要注意点如下:如果要保证DN内数据写入顺序,需要设置connectionSize = 1.如果源端有更新主键操作或者Flink聚合操作,需要将ignoreUpdateBefore设置为False(默认为True).

实时数仓

Flink实时处理能力+DWS的Binlog能力。

基于公开来源信息, 学习资源来自华为云GaussDB(DWS)数据库官网


文章作者: 青山生柳
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 青山生柳 !
 上一篇
GaussDB(DWS)数据库-集群管理篇 GaussDB(DWS)数据库-集群管理篇
GaussDB(DWS)数据库-集群管理篇,主要介绍集群创建与删除、集群监控管理、集群备份恢复管理、集群容灾管理、集群弹性伸缩管理、集群资源管理、智能运维等方面。
2025-08-04
下一篇 
GaussDB(DWS)数据库-开发应用篇 GaussDB(DWS)数据库-开发应用篇
GaussDB(DWS)数据库-开发应用篇,主要介绍DWS驱动及ODBC/JDBC开发、SQL编辑器、数据集成工具、数据调度工具等。
2025-08-03
  目录