华为云数据仓库服务DWS对接使用完全指南:从集群创建到应用集成

apphuang2026年07月04日 13:24:402

前言:为什么需要了解DWS的对接使用

华为云数据仓库服务GaussDB(DWS)是一种基于华为云基础设施和平台的在线数据分析处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。它兼容PostgreSQL/Oracle/Teradata/MySQL等数据库生态,为各行业PB级海量大数据分析提供有竞争力的解决方案。在实际生产环境中,DWS很少作为一个孤岛存在,它需要与各类业务应用、数据源、数据分析工具进行对接。无论是将业务数据导入DWS进行分析,还是将DWS中的分析结果提供给BI工具展示,都涉及DWS的对接使用问题。本文将从集群创建、连接配置、数据迁移、工具集成、API开发等多个维度,系统性地介绍DWS的对接使用方法。

需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联

一、DWS集群创建与基础配置

在使用DWS服务之前,首先需要创建一个DWS集群。一个DWS集群由多个在相同子网中的节点组成,共同提供服务。集群创建是后续所有对接操作的基础,因此在创建时需要合理规划网络、规格和存储等配置。

1.1 创建集群前的准备工作

在创建DWS集群之前,需要完成以下准备工作:已注册华为云账号并完成实名认证,账号不能处于欠费或冻结状态;获取账号的AK/SK访问密钥;已创建虚拟私有云VPC和子网。DWS集群不支持跨区域访问OBS桶数据,因此创建DWS集群前需要规划好DWS集群与OBS桶在同一个区域内。

1.2 集群创建步骤

登录DWS管理控制台,在购买页面进行基础配置。基础配置包括区域选择、计费模式、可用分区等。区域应就近选择靠近您业务的区域,可以降低网络时延、提高访问速度,DWS创建后无法更换区域。计费模式支持包年/包月和按需计费两种方式,如长期使用建议选择包年/包月以享受更大折扣。可用分区可选择单AZ或多AZ,对高可用要求更高的业务建议使用多AZ部署。完成基础配置后,还需要进行数据仓库配置,包括集群版本、节点规格、节点数量、存储容量等参数。

1.3 集群网络规划要点

网络规划直接关系到后续能否顺利连接DWS集群。业务应用与DWS进行通信的基本原则是确保业务应用所在网络与DWS的网络能连通。最理想的场景是业务应用与DWS在同一个区域内同一个VPC下,此时应用可以通过内网IP直接与DWS通信。例如,ECS部署在某个区域,则DWS选择在同一区域下,并保持与ECS在同一个VPC内,ECS的内网IP与DWS的内网IP即可直接通信。如果业务应用与DWS在同一个区域内但不同VPC下,则需要将两个VPC建立对等连接后,ECS才可通过DWS的内网IP进行访问。对于云下与云上的通信场景,可以使用DWS的公网IP或公网域名进行通信,也可以使用云专线进行通信。

二、DWS集群连接方式详解

DWS集群创建完成后,就可以使用SQL客户端工具或者JDBC/ODBC等第三方驱动程序连接集群中的数据库。DWS提供了多种连接方式,以适应不同的使用场景和开发需求。

2.1 使用gsql命令行客户端连接

gsql是DWS提供的与集群版本配套的Linux命令行客户端工具,可以通过集群的公网地址或者内网地址访问集群。gsql连接的基本命令格式为:

gsql -d <数据库名> -h <主机IP> -p <端口号> -U <用户名> -W <密码> -r

其中-d指定要连接的数据库名称,-h指定DWS集群的主机IP地址(内网IP或公网IP),-p指定端口号(默认为8000),-U指定数据库用户名,-W指定密码,-r参数启用命令行编辑功能。以内网IP访问为例:

gsql -d gaussdb -h 192.168.120.2 -p 8000 -U dbadmin -W password -r

gsql工具可以在DWS控制台的"连接客户端"页面下载,根据集群版本和操作系统选择对应的版本。

2.2 使用SQL编辑器连接

DWS控制台提供了内置的SQL编辑器,无需安装任何客户端工具即可在浏览器中连接DWS数据库并执行SQL查询。SQL编辑器适合快速验证和简单的数据操作场景,登录DWS管理控制台后,在集群列表页面点击指定集群的"SQL编辑器"即可进入。使用SQL编辑器连接DWS数据库后,可以创建OBS外表,通过OBS外表将OBS桶数据导入DWS集群。

2.3 使用JDBC驱动连接

JDBC是Java应用程序连接DWS最常用的方式。DWS支持两种JDBC驱动包:gsjdbc4.jar和gsjdbc200.jar。gsjdbc4.jar对应的驱动类为"org.postgresql.Driver",连接URL前缀为"jdbc:postgresql";gsjdbc200.jar对应的驱动类为"com.huawei.gauss200.jdbc.Driver",连接URL前缀为"jdbc:gaussdb"。JDBC驱动可以从DWS控制台的"连接客户端"页面下载。

以下是使用JDBC连接DWS的完整示例代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class DWSJDBCExample {
    public static void main(String[] args) {
        // 使用gsjdbc4.jar时的驱动类和连接URL
        String driver = "org.postgresql.Driver";
        String url = "jdbc:postgresql://192.168.0.77:8000/postgres";
        // 如果使用gsjdbc200.jar,驱动类改为"com.huawei.gauss200.jdbc.Driver",
        // URL前缀改为"jdbc:gaussdb"
        String username = "dbadmin";
        String password = "your_password";
        
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        
        try {
            // 1. 加载JDBC驱动
            Class.forName(driver);
            
            // 2. 建立数据库连接
            conn = DriverManager.getConnection(url, username, password);
            System.out.println("成功连接到DWS集群");
            
            // 3. 创建Statement对象执行查询
            stmt = conn.createStatement();
            String sql = "SELECT * FROM your_table LIMIT 10";
            rs = stmt.executeQuery(sql);
            
            // 4. 处理查询结果
            while (rs.next()) {
                System.out.println("列1: " + rs.getString(1) + ", 列2: " + rs.getString(2));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 5. 关闭资源
            try {
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

DWS还支持通过JDBC直接调用事先创建的存储过程,调用Connection的prepareCall方法创建调用语句对象:

CallableStatement cstmt = myConn.prepareCall("{? = CALL TESTPROC(?)}");

另外,DWS JDBC驱动中的CopyManager类提供了批量导入数据的能力,适用于大批量数据写入场景。

2.4 使用ODBC驱动连接

对于C/C++等非Java应用程序,可以使用ODBC驱动连接DWS。DWS支持开源PostgreSQL客户端和ODBC驱动程序。在Linux系统下,常用的驱动管理器有unixODBC和iODBC。ODBC连接的基本流程包括:配置数据源名称(DSN)、调用SQLConnect建立连接、执行SQL语句等。

以下是ODBC连接的C语言示例代码框架:

#include <stdlib.h>
#include <sql.h>
#include <sqlext.h>

// 分配环境句柄、连接句柄
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;

// 初始化环境
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

// 连接DWS数据源
retcode = SQLConnect(hdbc, (SQLCHAR*)dsn, SQL_NTS, 
                     (SQLCHAR*)NULL, 0, NULL, 0);

2.5 网络连通性检查

无论使用哪种连接方式,确保网络连通都是前提条件。检查通信的基本要点是ECS出方向规则和DWS入方向规则。ECS的安全组出方向规则需要放通,DWS创建时如果没有专门设置安全组,系统默认的安全组入规则已放通所有IPv4地址、端口为8000的TCP类型访问。为确保安全,也支持只开放某个对应的IP。登录ECS后能ping通DWS的内网IP,即表示网络连通。

三、数据导入与导出方案

数据仓库的核心价值在于对数据的分析处理,而数据导入是将业务数据送入DWS的第一步。DWS提供了多种数据导入导出方案,以适应不同的数据源类型、数据量和实时性要求。

3.1 通过OBS外表导入数据

OBS(对象存储服务)是华为云提供的海量、安全、高可靠的云存储服务。DWS支持通过OBS外表访问OBS桶中的数据,或将DWS表数据导出到OBS桶。这种方式适合将存储在OBS中的CSV、TXT等格式的批量数据导入DWS。

操作流程如下:首先创建OBS桶并将本地数据文件上传到OBS桶;然后在DWS中使用SQL编辑器或gsql客户端创建OBS外表;最后通过外表将数据导入到DWS的目标表中。DWS集群不支持跨区域访问OBS桶数据,创建DWS集群前需要规划好DWS集群与OBS桶在同一个区域内。

3.2 使用GDS并行导入

GDS(General Data Service)是一款运行在Linux操作系统的命令行工具,通过和外表机制的配合,实现数据的高速导入导出。GDS工具包需要安装在数据源文件所在的服务器上。这种方式适用于从远端服务器导入大量数据到DWS的场景,DWS支持通过GDS外表将TXT、CSV和FIXED格式的数据导入到集群进行查询。

使用GDS导入数据的基本步骤包括:在数据服务器上安装GDS工具包;准备数据源文件;创建外表用于对接GDS和DWS;启动DWS并创建数据库表后将数据导入。GDS服务器与DWS集群应处于同一区域、同一VPC和子网。生产环境下GDS服务器的推荐配置为:网络不低于10GE,CPU 16U,内存64G,存储不低于500GB。

3.3 使用CDM进行批量数据迁移

CDM(云数据迁移服务)是一种高效、易用的批量数据迁移服务,提供同构/异构数据源之间批量数据迁移的功能。CDM可以将其他数据源(例如MySQL、Oracle)的数据迁移到DWS集群的数据库中。CDM在迁移数据到DWS时,采用的是COPY方式和GDS并行导入方式。使用CDM迁移数据到DWS的典型场景包括:从本地MySQL数据库迁移到DWS、从Oracle迁移到DWS、从Hologres迁移到DWS等。CDM集群所在VPC、子网、安全组需要与DWS集群所在的网络一致。

3.4 使用DLI Flink实现实时数据同步

对于需要实时数据同步的场景,可以使用DLI(数据湖探索)服务的Flink作业将数据实时同步到DWS。例如,可以将MySQL数据实时同步到DWS。该实践的基本流程包括:准备MySQL数据源;创建DWS集群和目标表;创建DLI弹性资源池及队列;创建增强型跨源连接用于连接RDS和DWS;准备DWS对接Flink工具dws-connector-flink插件;创建DLI Flink SQL作业并配置SQL代码。在Flink跨源开发场景下,建议使用DLI提供的跨源认证功能,不要在作业脚本中直接指定MySQL和DWS的用户名和密码,以避免密码泄露风险。

3.5 使用DSC工具迁移SQL脚本

DSC(Database Schema Convertor)是一款运行在Linux或Windows操作系统上的命令行工具,通过内置的语法迁移逻辑解析源数据库应用程序SQL脚本,并迁移为适用于DWS数据库的应用程序SQL脚本。DSC不需要连接数据库,可在离线模式下实现零停机迁移。DSC支持迁移Teradata、Oracle、Netezza、MySQL和DB2数据库的SQL脚本。在DWS控制台的"连接客户端"页面可以下载DSC迁移工具。

四、第三方BI工具与数据治理平台对接

DWS兼容PostgreSQL/Oracle/Teradata/MySQL数据库生态,与主流第三方数据库ETL、BI工具厂商对接认证。这使得DWS可以无缝集成到企业现有的数据分析生态中。

4.1 Power BI对接

Power BI是微软推出的可视化数据探索和交互式报告工具。DWS对接Power BI的操作步骤包括:安装.NET Framework、Npgsql驱动和Power BI;在DWS中创建好对应的数据库、Schema、表、用户,并授权该用户访问表的权限;在Power BI中添加DWS数据源,配置连接信息后进行数据分析和可视化展示。

4.2 FineBI与FineReport对接

帆软软件的FineBI和FineReport是广泛使用的企业级报表和BI工具。华为云与帆软达成了生态、解决方案、产品等的全面合作,帆软产品与华为云DWS数据仓库无缝对接。FineBI支持华为云DWS数据源。在FineBI中对接DWS的操作步骤为:以管理员身份登录FineBI,点击"管理系统>数据连接>数据连接管理>新建",找到华为云DWS的图标;驱动切换为"自定义"并选择上传的DWS JDBC驱动,然后输入连接信息。

4.3 Tableau对接

DWS支持标准的JDBC接口,支持PG生态,可以与Tableau等第三方工具进行对接。通过JDBC驱动,Tableau可以连接到DWS并进行数据分析和可视化。

4.4 DataArts Studio数据治理集成

DataArts Studio是华为云提供的一站式数据治理平台。通过配置数据源信息,可以建立DataArts Studio与DWS的数据连接。DataArts Studio基于管理中心的数据连接对数据湖底座进行数据开发、治理、服务和运营。在创建DWS类型的数据连接前,需要先在DWS服务中创建集群,并且具有KMS密钥的查看权限。DataArts Studio提供可视化的ETL开发环境,可以无缝管理整个ETL流程。为了优化数据迁移和ETL流程,建议将CDM和DataArts Studio组合使用。

4.5 ROMA Connect集成

ROMA Connect是华为云的应用与数据集成平台,提供了DWS连接器用于连接DWS数据库,负责建立和维护应用程序与DWS数据库之间的连接,并管理数据的传输。在ROMA Connect中配置DWS连接器:登录ROMA Connect控制台,在左侧导航栏选择"连接器",单击"新建连接",选择"DWS"连接器。配置连接器信息包括连接名称、区域、项目、实例、主机IP地址、端口、数据库名、用户名和密码等。DWS连接器支持获取记录、添加记录、更新记录、删除记录等操作。

五、REST API与SDK开发调用

除了数据库连接方式外,DWS还提供了REST API接口和多种编程语言的SDK,用于实现集群管理、资源监控等运维操作。

5.1 REST API调用

DWS提供了丰富的OpenAPI接口,用于管理集群、查询规格信息、绑定ELB等操作。API的调用方法包括构造请求、认证授权、处理返回结果等步骤。以创建集群为例,该接口为异步接口,创建集群需要10到15分钟。调用API前需要先获取用户Token,并将其放入请求头中进行认证。使用Postman可以方便地调用DWS API进行集群创建等操作。

5.2 SDK开发

登录华为云API Explorer,选择"大数据>数据仓库服务"进入DWS OpenAPI页面,根据需求选择具体OpenAPI接口,切换至"代码示例"页签,选择指定编程语言,单击"华为云SDK"即可查看对应编程语言类型的SDK代码。DWS支持的SDK包括Java、Python、Go等多种语言。以下是通过SDK调用DWS API的Java代码示例框架:

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.dws.v1.DwsClient;
import com.huaweicloud.sdk.dws.v1.model.*;

// 配置认证信息
ICredential credential = new BasicCredentials()
    .withAk(ak)
    .withSk(sk);

// 创建DWS客户端
DwsClient client = DwsClient.newBuilder()
    .withCredential(credential)
    .withRegion(region)
    .build();

// 调用API查询集群列表
ListClustersRequest request = new ListClustersRequest();
ListClustersResponse response = client.listClusters(request);
System.out.println(response.toString());

六、安全与权限管理

在生产环境中使用DWS,安全与权限管理是不可忽视的重要环节。

6.1 安全组与白名单配置

DWS集群的安全组控制着入方向和出方向的网络流量。默认情况下,DWS安全组的入规则已放通所有IPv4地址、端口为8000的TCP类型访问。在实际生产环境中,建议只开放业务应用对应的IP地址,而不是开放所有IP。通过配置安全组规则,可以精确控制哪些IP地址可以访问DWS集群。

6.2 数据库用户与权限管理

DWS支持细粒度的数据库用户和权限管理。在创建DWS集群时,系统会默认创建一个管理员用户(默认为dbadmin)。在实际使用中,应根据最小权限原则创建不同的数据库用户并分配不同的权限。例如,为数据迁移任务创建专用的迁移用户,为BI报表创建只读用户,为ETL作业创建读写用户等。

6.3 数据加密与传输安全

对于敏感数据,DWS支持数据加密存储。在创建DWS集群时可以选择启用磁盘加密,使用KMS(密钥管理服务)管理的密钥对数据进行加密。在数据传输方面,建议使用内网IP进行通信以保证数据传输的安全性和低延迟。如果必须通过公网访问,建议使用SSL加密连接。

七、常见问题与排障

7.1 连接失败排查思路

当无法连接到DWS集群时,可以按照以下思路排查:首先检查ECS出方向规则是否放通;然后检查DWS入方向规则是否正确配置;登录ECS尝试ping DWS的内网IP确认网络连通性;确认使用的JDBC/ODBC驱动版本与DWS集群版本兼容;确认连接URL中的IP地址、端口号、数据库名、用户名和密码正确无误。

7.2 性能优化建议

DWS的性能优化可以从多个维度入手:合理规划集群规格和节点数量,根据数据量和查询负载选择合适的资源配置;使用GDS等并行导入工具替代单条INSERT语句;合理设计表结构,选择合适的分区键和分布键;使用资源管理功能为不同作业绑定不同资源池,避免多用户查询作业相互影响。

7.3 数据迁移注意事项

在进行数据迁移时,需要注意以下几点:DWS集群与数据源应在同一区域以降低网络延迟;使用CDM迁移时,CDM集群的网络配置需与DWS集群一致;大批量数据迁移建议使用GDS或CDM的GDS并行导入模式;迁移前应在DWS中创建好目标表结构,确保字段类型匹配。

总结

华为云数据仓库服务DWS提供了丰富灵活的对接方式,从基础的JDBC/ODBC数据库连接,到高效的GDS并行导入、CDM批量迁移,再到与Power BI、FineBI等第三方BI工具的无缝集成,以及REST API和SDK的开发支持,几乎覆盖了企业数据仓库建设中的所有对接场景。在实际使用中,应根据具体的业务需求、数据量大小、实时性要求和现有技术栈,选择最合适的对接方案。合理的网络规划、安全配置和性能优化是确保DWS稳定高效运行的关键。

常见问题解答

问1:DWS支持哪些连接方式?
答:DWS支持多种连接方式,包括gsql命令行客户端、内置SQL编辑器、JDBC驱动、ODBC驱动等。JDBC驱动支持gsjdbc4.jar和gsjdbc200.jar两种包。此外还支持通过REST API和SDK进行集群管理操作。

问2:ECS无法连接到DWS集群怎么办?
答:首先检查ECS安全组的出方向规则是否放通;其次检查DWS安全组的入方向规则是否正确,默认端口为8000;确认ECS和DWS是否在同一个VPC内,如果不在需要配置VPC对等连接;登录ECS尝试ping DWS的内网IP确认网络连通性。

问3:如何将大量数据快速导入DWS?
答:DWS提供了多种高效数据导入方式。对于OBS上的数据,可以通过创建OBS外表进行导入。对于远端服务器上的数据,可以使用GDS工具进行并行导入。对于异构数据源迁移,可以使用CDM服务进行批量迁移。对于实时数据同步,可以使用DLI Flink作业。

问4:DWS可以与哪些第三方BI工具对接?
答:DWS兼容PostgreSQL生态,可以与主流BI工具对接。包括微软Power BI、帆软FineBI和FineReport、Tableau、永洪BI、Quick BI等。

问5:DWS的JDBC连接URL格式是什么?
答:使用gsjdbc4.jar时,URL格式为"jdbc:postgresql://IP地址:端口号/数据库名";使用gsjdbc200.jar时,URL格式为"jdbc:gaussdb://IP地址:端口号/数据库名"。驱动类分别为"org.postgresql.Driver"和"com.huawei.gauss200.jdbc.Driver"。

问6:DWS集群创建后可以更改区域吗?
答:不可以。DWS集群创建后无法更换区域,因此在创建前需要谨慎选择区域。建议就近选择靠近您业务的区域,可以降低网络时延、提高访问速度。

相关文章

华为云服务器购买怎么便宜?小公司省钱攻略来了!这样买立省好几千​

华为云服务器购买怎么便宜?小公司省钱攻略来了!这样买立省好几千​

很多朋友都在吐槽:“华为云服务器太贵了,预算有限实在买不起!” 其实,买华为云服务器贵不贵,关键看你会不会选、会不会买。今天就来给大家分享一套超实用的省钱攻略,小公司、创业团队也能轻松用得起稳定又安全…

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

上海汪远信息科技有限所在公司年销华为云产品3亿+,属于头部代理梯队,可为合作客户提供最高30%的返佣优惠,直接帮助企业降低30%的云资源成本。…

华为云代理商有哪些?华为云代理返点是真的么?

华为云代理商有哪些?华为云代理返点是真的么?

一,华为云代理商简介华为云代理商,顾名思义就是替华为云做华为云服务器数据库等公有云产品推广的代理商,每推广出一单华为云服务器,华为云会跟这个代理商结算佣金,佣金比例分为月度佣金,季度佣金和年度佣金,华…

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

2026华为云返点返佣政策深度解析:头部代理返佣优势与企业合作指南

一、华为云代理商的核心价值定位1. 代理商的角色与职责华为云代理商作为华为云生态的核心合作伙伴,承担着三重核心职能:•产品推广销售:负责推广销售华为云全系列云产品,包括云服务器ECS、云数据…

上海汪远信息:年销1.5亿+的头部华为云代理商,10年深耕为企业上云保驾护航

上海汪远信息:年销1.5亿+的头部华为云代理商,10年深耕为企业上云保驾护航

核心摘要本文深度解析华为云代理商行业现状,揭示小代理商生存困境的核心原因(业绩压力大、垫资周期长、资金链脆弱),重点推荐上海汪远信息科技有限公司——一家拥有10年华为云代理经验、年销量超1.5亿的全国…

数据的“深喉”与隐形金矿:华为云对象存储返点背后的降维真相

数据的“深喉”与隐形金矿:华为云对象存储返点背后的降维真相

你,真的以为企业的数据躺在云端就万事大吉了?在这个被字节、像素和信息流淹没的数字深海中,每一张图片、每一帧视频、每一份交易日志,都在夜以继日地发出无声的“求救信号”。它们一方面渴望着最安全、最坚不可摧…