华为云用户手册

  • 相关概念 风险检查维度 分为性能、安全、可靠性、成本、服务基线5个维度。每个维度根据检查项的检查结果,又分为安全项、不涉及、风险项,其中风险项根据业务受损情况,分为高危,中危,普通。 高危:业务系统受损的风险加大,面临业务中断、资产受损、数据丢失等重大事件。 中危:业务系统会有限受损。 普通:需要关注的风险。 服务基线 检查您的账号是否快达到服务配额的限制,及时提醒用户尽早扩容服务配额,以免扩容时创建不了资源,影响应用系统的可用性。 风险识别 识别客户使用的服务或资源存在的容量风险,通过压力系数,还可以预测可能会出现的容量风险。 聚合周期 云监控服务在特定周期内对各服务上报的原始采样数据采取平均值、最大值、最小值、求和值、方差值的计算,这个计算的周期又叫做聚合周期。 容量报告 在风险识别执行完之后,会自动生成一份对应的容量报告,供您下载。 压力系数 特殊场景或特殊时期,资源可能受到的压力倍数。 专家绘图 技术专家在管理工具中的架构设计中画好架构图后,再同步到优化顾问服务的架构设计,会提示专家绘图,专家绘图只能查看,不允许编辑改动,如图1。 图1 专家绘图
  • 产品功能 优化顾问(Optimization Advisor,OA)是一个帮助用户快速识别和修复云资源部署架构潜在风险的架构优化平台。优化顾问根据理论联系实际,基于华为内部IT最佳实践经验,结合业界公有云方案,通过风险检查、容量分析和架构画图等功能帮助您充分直观的查看华为云云上资源部署情况,识别出风险点并给出建议,帮助您提升云上业务的稳定性。 优化顾问服务的功能主要包括: 风险检查:扫描您云上资源在性能、可靠性、安全、成本(针对购买了商业级或企业级支持计划的用户开放)、服务基线五个方面存在的风险点并给出优化建议,检查结果可以下载文档到本地,方便您查看分析。 自动巡检:您可以在风险检查页打开自动检查开关并设置自动检查的执行频率和时间,进行定时自动检查,还可以将检查后的结果发送至邮箱。 自定义检查规则:您可以自主选择停用或者启用指定检查项,还可以修改性能和成本维度检查规则的阈值。 历史记录:可以查看您1个月的检查记录及相应的检查结果。 架构设计:您可以通过架构设计方便地画出您的业务架构和云上资源的部署架构,支持容量风险监控、关联资源和全链路一键绘图。 容量优化:分析您的云上资源的使用情况,识别出您使用的服务或资源可能存在的容量风险,如cpu、内存、硬盘不足等 资源分组:资源分组支持用户从业务角度集中管理其业务涉及到的弹性云服务器、云硬盘、弹性IP、带宽、数据库等资源,从而按业务来管理不同类型的资源和进行容量风险识别,可以迅速提升运维效率。 月度服务报告:您可以查看账户上所有资源上个月的使用和变动情况,并且可以将报告导出下载到本地。注:功能尚在完善中,敬请期待。
  • 自定义检查规则 左侧导航栏选择进入“自定义规则”页面 您可以单击操作列的“停用”、“启用”选项,手动停用和启用指定检查项 “性能”维度和“成本”的部分检查项可以修改风险阈值,单击“自定义配置”选项修改。 当所选的检查项停用/启用后,只有下次检查时才会生效,本次检查结果不会受到影响。 目前,自定义阈值仅适用于性能和成本维度的检查项,而其他维度的检查项阈值暂不支持自定义。 “成本”维度检查项在购买商业级或企业级支持计划之后才可使用。
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 result Object 返回值 status String 状态 状态码: 401 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 result Object 返回值 status String 状态 状态码: 401 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 在构造请求中以调用获取用户Token接口为例说明了如何调用API。 Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } } } 获取Token后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 GET https://iam.cn-north-4.myhuaweicloud.com/v3/auth/projects Content-Type: application/json X-Auth-Token: ABCDEFJ....
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12M以内,12M以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • 响应示例 状态码: 200 OK { "result" : { "size" : 1, "total_items_count" : 1, "items_before" : 0, "items" : [ { "id" : "20d*****-****-****-****-*********e4w", "order_id" : "CS24012510353I6V5", "creater_id" : "0dc311a468024a...", "spec_code" : "codeartside.basic", "status" : 0, "charging_mode" : "prePaid", "created_time" : "2024-01-25T01:58:00Z" } ], "empty" : false }, "status" : "success" }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 result Object 返回值 status String 状态 状态码: 401 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 请求示例 购买激活码 POST https://{endpoint}/v2/licenses { "spec_code" : "publiccloud", "charging_mode" : "prePaid", "period_type" : "month", "period_num" : 1, "is_auto_renew" : false, "is_auto_pay" : false, "count" : 1, "is_auto_bind" : false }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 result Object 返回值 status String 状态 状态码: 401 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Content-Type 否 String 内容类型 表2 请求Body参数 参数 是否必选 参数类型 描述 spec_code 是 String 规格(SKU) charging_mode 否 String 计费模式 period_type 否 String 周期类型 period_num 是 Integer 续费变更的周期数 is_auto_renew 否 Boolean 该资源当前是否是自动续费(即 是否开通了自动续费):(适用于包周期资源) false:否;true:是; 默认为false:否; 非包周期资源为空 is_auto_pay 否 Boolean 是否自动支付: false:否;true:是; 默认为false:否 count 是 Integer 订单购买资源总数 is_auto_bind 否 Boolean 是否自动绑定: false:否;true:是; 默认为false:否
  • 响应消息体 响应消息体通常以结构化格式返回,与响应消息头中Content-type对应,传递除响应消息头之外的内容。 对于获取用户Token接口,返回如下消息体。为篇幅起见,这里只展示部分内容。 { "token": { "expires_at": "2019-02-13T06:52:13.855000Z", "methods": [ "password" ], "catalog": [ { "endpoints": [ { "region_id": "cn-north-4", ...... 当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下所示。 { "error_msg": "The format of message is error", "error_code": "AS.0001" } 其中,error_code表示错误码,error_msg表示错误描述信息。
  • 状态码 表1 状态码 状态码 编码 错误码说明 100 Continue 继续请求。 这个临时响应用来通知客户端,它的部分请求已经被服务器接收,且仍未被拒绝。 101 Switching Protocols 切换协议。只能切换到更高级的协议。 例如,切换到HTTP的新版本协议。 201 Created 创建类的请求完全成功。 202 Accepted 已经接受请求,但未处理完成。 203 Non-Authoritative Information 非授权信息,请求成功。 204 NoContent 请求完全成功,同时HTTP响应不包含响应体。 在响应OPTIONS方法的HTTP请求时返回此状态码。 205 Reset Content 重置内容,服务器处理成功。 206 Partial Content 服务器成功处理了部分GET请求。 300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择。 301 Moved Permanently 永久移动,请求的资源已被永久的移动到新的URI,返回信息会包括新的URI。 302 Found 资源被临时移动。 303 See Other 查看其它地址。 使用GET和POST请求查看。 304 Not Modified 所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。 305 Use Proxy 所请求的资源必须通过代理访问。 306 Unused 已经被废弃的HTTP状态码。 400 BadRequest 非法请求。 建议直接修改该请求,不要重试该请求。 401 Unauthorized 在客户端提供认证信息后,返回该状态码,表明服务端指出客户端所提供的认证信息不正确或非法。 402 Payment Required 保留请求。 403 Forbidden 请求被拒绝访问。 返回该状态码,表明请求能够到达服务端,且服务端能够理解用户请求,但是拒绝做更多的事情,因为该请求被设置为拒绝访问,建议直接修改该请求,不要重试该请求。 404 NotFound 所请求的资源不存在。 建议直接修改该请求,不要重试该请求。 405 MethodNotAllowed 请求中带有该资源不支持的方法。 建议直接修改该请求,不要重试该请求。 406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求。 407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。 408 Request Time-out 服务器等候请求时发生超时。 客户端可以随时再次提交该请求而无需进行任何更改。 409 Conflict 服务器在完成请求时发生冲突。 返回该状态码,表明客户端尝试创建的资源已经存在,或者由于冲突请求的更新操作不能被完成。 410 Gone 客户端请求的资源已经不存在。 返回该状态码,表明请求的资源已被永久删除。 411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息。 412 Precondition Failed 未满足前提条件,服务器未满足请求者在请求中设置的其中一个前提条件。 413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息。 414 Request-URI Too Large 请求的URI过长(URI通常为网址),服务器无法处理。 415 Unsupported Media Type 服务器无法处理请求附带的媒体格式。 416 Requested range not satisfiable 客户端请求的范围无效。 417 Expectation Failed 服务器无法满足Expect的请求头信息。 422 UnprocessableEntity 请求格式正确,但是由于含有语义错误,无法响应。 429 TooManyRequests 表明请求超出了客户端访问频率的限制或者服务端接收到多于它能处理的请求。建议客户端读取相应的Retry-After首部,然后等待该首部指出的时间后再重试。 500 InternalServerError 表明服务端能被请求访问到,但是不能理解用户的请求。 501 Not Implemented 服务器不支持请求的功能,无法完成请求。 502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。 503 ServiceUnavailable 被请求的服务无效。 建议直接修改该请求,不要重试该请求。 504 ServerTimeout 请求在给定的时间内无法完成。客户端仅在为请求指定超时(Timeout)参数时会得到该响应。 505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理。 父主题: 附录
  • 调用API获取项目ID 项目ID还可以通过调用查询指定条件下的项目信息API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects/”,其中{Endpoint}为IAM的终端节点,可以从终端节点获取。接口的认证鉴权请参见认证鉴权。 响应示例如下,其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "cn-north-4", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" }, "id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" } }
  • 概述 CodeArts IDE是一个适用于Windows和Linux的集成开发环境(IDE),它将源代码编辑器的简洁性与代码补全和调试等强大的开发工具结合在一起,提供简单易用的编辑-构建-调试能力,可以让您在环境配置上花费更少的时间,节省更多的时间用于实现您的创意。 您可以使用本文档提供的API对CodeArts IDE进行相关操作,如:激活管理。支持的全部操作请参见API概览。 在调用CodeArts IDE的API之前,请确保已经充分了解CodeArts IDE的相关概念,详细信息请参见产品介绍。 父主题: 使用前必读
  • 请求消息体 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,********为用户登录密码,xxxxxxxxxx为project的名称,如cn-north-4,您可以从地区和终端节点中获取。 scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可以设置Token的作用域为某个账号下所有资源或账号的某个project下的资源,详细定义请参见获取用户Token。 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 名称 描述 是否必选 备注 Content-Type 消息体的类型(格式) 是 默认取值为“application/json”,有其他取值时会在具体接口中专门说明。 X-Auth-Token 用户Token 否 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 X-Project-ID 子项目ID 否 在多项目场景中使用 X-Domain-ID 账号ID - - 公有云API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参考AK/SK认证。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
  • 请求URI 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 请求URI由四部分构成:{URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 各参数含义如下: 参数 说明 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,您可以从终端节点中获取。例如,IAM服务在华北-北京四区域的Endpoint为iam.cn-north-4.myhuaweicloud.com。 resource-path 资源路径,即API访问路径,从具体API的URI模块获取。例如,获取用户Token接口的resource-path为/v3/auth/tokens。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个?,形式为参数名=参数取值。例如,limit=10表示查询不超过10条数据。 例如,您需要获取IAM在“华北-北京四”区域的Token,则需使用“华北-北京四”区域的Endpoint(iam.cn-north-4.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 请求方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens
  • 基本概念 账号 用户注册华为云时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用他们进行日常管理工作。 用户 由账号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。 Region分为通用Region和专属Region: 通用Region指面向公共租户提供通用云服务的Region。 专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 华为云的区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。 如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。 父主题: 使用前必读
  • 错误码说明 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 更多服务错误码请参见API错误中心。 状态码 错误码 错误信息 描述 处理措施 400 IDE.00000097 输入参数校验失败。 输入参数校验失败。 检查输入参数格式。 403 IDE.00040014 无访问权限。 无访问权限。 根据错误信息,检查相应的权限是否满足。 404 IDE.00900001 激活码不存在。 激活码不存在。 检查输入的激活码。 406 IDE.00000040 HTTP访问异常。 HTTP访问异常。 请重试。如仍有问题,请联系支持工程师处理。 406 IDE.00900007 存在未支付订单。 存在未支付订单。 支付或取消未支付订单。 406 IDE.00900008 激活码数量超出配额。 激活码数量超出配额。
  • 约束和限制 在同一队列中,如果同时使用了经典型跨源连接和增强型跨源连接,则经典型跨源连接优先于增强型跨源连接。推荐使用增强型跨源连接。 DLI提供的default队列不支持创建跨源连接。 Flink作业访问DIS,OBS和SMN数据源,无需创建跨源连接,可以直接访问。 增强型跨源仅支持包年包月队列、按需计费模式下的专属队列。 增强型跨源连接需要使用VPC、子网、路由、对等连接功能,因此需要获得VPC(虚拟私有云)的VPC Administrator权限。 可在服务授权中进行设置。 使用DLI增强型跨源时,弹性资源池/队列的网段与数据源网段不能重合。 访问跨源表需要使用已经创建跨源连接的队列。 跨源表不支持Preview预览功能。 检测跨源连接的连通性时对IP约束限制如下: IP必须为合法的IP地址,用“.”分隔的4个十进制数,范围是0-255。 测试时IP地址后可选择添加端口,用":"隔开,端口最大限制5位,端口范围:0~65535。 例如192.168.xx.xx或者192.168.xx.xx:8181。 检测跨源连接的连通性时对域名约束限制如下: 域名的限制长度为1到255的字符串,并且组成必须是字母、数字、下划线或者短横线。 域名的顶级域名至少包含两个及以上的字母,例如.com,.net,.cn等。 测试时域名后可选择添加端口,用":"隔开,端口最大限制为5位,端口范围:0~65535。 例如example.com:8080。
  • 示例 使用Kafka发送数据,通过JDBC结果表将Kafka数据再输出到MySQL数据库中。 参考增强型跨源连接,在DLI上根据MySQL和Kafka所在的虚拟私有云和子网分别创建相应的增强型跨源连接,并绑定所要使用的Flink弹性资源池。 设置MySQL和Kafka的安全组,添加入向规则使其对Flink的队列网段放通。参考测试地址连通性分别根据MySQL和Kafka的地址测试队列连通性。若能连通,则表示跨源已经绑定成功,否则表示未成功。 登录MySQL,并使用下述命令在flink库下创建orders表。 CREATE TABLE `flink`.`orders` ( `order_id` VARCHAR(32) NOT NULL, `order_channel` VARCHAR(32) NULL, `order_time` VARCHAR(32) NULL, `pay_amount` DOUBLE UNSIGNED NOT NULL, `real_pay` DOUBLE UNSIGNED NULL, `pay_time` VARCHAR(32) NULL, `user_id` VARCHAR(32) NULL, `user_name` VARCHAR(32) NULL, `area_id` VARCHAR(32) NULL, PRIMARY KEY (`order_id`) ) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci; 参考创建Flink OpenSource作业,创建flink opensource sql作业,输入以下作业运行脚本,提交运行作业。 注意:创建作业时,在作业编辑界面的“运行参数”处,“Flink版本”选择“1.12”,勾选“保存作业日志”并设置保存作业日志的OBS桶,方便后续查看作业日志。如下脚本中的加粗参数请根据实际环境修改。 CREATE TABLE kafkaSource ( order_id string, order_channel string, order_time string, pay_amount double, real_pay double, pay_time string, user_id string, user_name string, area_id string ) WITH ( 'connector' = 'kafka', 'topic' = 'KafkaTopic', 'properties.bootstrap.servers' = 'KafkaAddress1:KafkaPort,KafkaAddress2:KafkaPort', 'properties.group.id' = 'GroupId', 'scan.startup.mode' = 'latest-offset', 'format' = 'json' ); CREATE TABLE jdbcSink ( order_id string, order_channel string, order_time string, pay_amount double, real_pay double, pay_time string, user_id string, user_name string, area_id string ) WITH ( 'connector' = 'jdbc', 'url' = 'jdbc:mysql://MySQLAddress:MySQLPort/flink',--其中url中的flink表示MySQL中orders表所在的数据库名 'table-name' = 'orders', 'username' = 'MySQLUsername', 'password' = 'MySQLPassword', 'sink.buffer-flush.max-rows' = '1' ); insert into jdbcSink select * from kafkaSource; 连接Kafka集群,向Kafka相应的topic中发送如下测试数据: {"order_id":"202103241000000001", "order_channel":"webShop", "order_time":"2021-03-24 10:00:00", "pay_amount":"100.00", "real_pay":"100.00", "pay_time":"2021-03-24 10:02:03", "user_id":"0001", "user_name":"Alice", "area_id":"330106"} {"order_id":"202103241606060001", "order_channel":"appShop", "order_time":"2021-03-24 16:06:06", "pay_amount":"200.00", "real_pay":"180.00", "pay_time":"2021-03-24 16:10:06", "user_id":"0001", "user_name":"Alice", "area_id":"330106"} 查看表中数据,在MySQL中执行sql查询语句。 select * from orders; 其结果参考如下(注意,以下数据为从MySQL中复制的结果,并不是MySQL中的数据样式)。 202103241000000001,webShop,2021-03-24 10:00:00,100.0,100.0,2021-03-24 10:02:03,0001,Alice,330106 202103241606060001,appShop,2021-03-24 16:06:06,200.0,180.0,2021-03-24 16:10:06,0001,Alice,330106
  • 参数说明 参数 是否必选 默认值 类型 说明 connector 是 无 String 指定要使用的连接器,这里应该是'jdbc'。 url 是 无 String 数据库的URL。 table-name 是 无 String 读取数据库中的数据所在的表名。 driver 否 无 String 连接数据库所需要的驱动。若未配置,则会自动通过URL提取。 username 否 无 String 数据库认证用户名,需要和'password'一起配置。 password 否 无 String 数据库认证密码,需要和'username'一起配置。 sink.buffer-flush.max-rows 否 100 Integer 每次写入请求缓存的最大行数。 它能提升写入数据的性能,但是也可能增加延迟。 设置为 "0" 关闭此选项。 sink.buffer-flush.interval 否 1s Duration 刷新缓存的间隔,在这段时间内以异步线程刷新数据。 它能提升写入数据的性能,但是也可能增加延迟。 设置为 "0" 关闭此选项。 注意:"sink.buffer-flush.max-rows" 设置为 "0",并设置刷新缓存间隔,则以完整的异步处理方式刷新缓存。 格式为:{length value}{time unit label},如123ms, 321s,支持的时间单位包括: d,h,min,s,ms等,默认为ms。 sink.max-retries 否 3 Integer 将记录写入数据库失败时的最大重试次数。 pwd_auth_name 否 无 String DLI侧创建的Password类型的跨源认证名称。 使用跨源认证则无需在作业中配置账号和密码。
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 13 create table jdbcSink ( attr_name attr_type (',' attr_name attr_type)* (','PRIMARY KEY (attr_name, ...) NOT ENFORCED) ) with ( 'connector' = 'jdbc', 'url' = '', 'table-name' = '', 'driver' = '', 'username' = '', 'password' = '' );
  • 数据类型映射 表1 数据类型映射 MySQL类型 PostgreSQL类型 Flink SQL类型 TINYINT - TINYINT SMALLINT TINYINT UNSIGNED SMALLINT INT2 SMALLSERIAL SERIAL2 SMALLINT INT MEDIUMINT SMALLINT UNSIGNED INTEGER SERIAL INT BIGINT INT UNSIGNED BIGINT BIGSERIAL BIGINT BIGINT UNSIGNED - DECIMAL(20, 0) BIGINT BIGINT BIGINT FLOAT REAL FLOAT4 FLOAT DOUBLE DOUBLE PRECISION FLOAT8 DOUBLE PRECISION DOUBLE NUMERIC(p, s) DECIMAL(p, s) NUMERIC(p, s) DECIMAL(p, s) DECIMAL(p, s) BOOLEAN TINYINT(1) BOOLEAN BOOLEAN DATE DATE DATE TIME [(p)] TIME [(p)] [WITHOUT TIMEZONE] TIME [(p)] [WITHOUT TIMEZONE] DATETIME [(p)] TIMESTAMP [(p)] [WITHOUT TIMEZONE] TIMESTAMP [(p)] [WITHOUT TIMEZONE] CHAR(n) VARCHAR(n) TEXT CHAR(n) CHARACTER(n) VARCHAR(n) CHARACTER VARYING(n) TEXT STRING BINARY VARBINARY BLOB BYTEA BYTES - ARRAY ARRAY
  • 注意事项 创建Flink OpenSource SQL作业时,在作业编辑界面的“运行参数”处,“Flink版本”需要选择“1.12”,勾选“保存作业日志”并设置保存作业日志的OBS桶,方便后续查看作业日志。 如果JDBC结果表定义了主键,则连接器以upsert模式运行,否则,连接器以Append模式运行。 upsert模式:Flink会根据主键插入新行或更新现有行,Flink可以通过这种方式保证幂等性。为保证输出结果符合预期,建议为表定义主键。 Append模式:Flink 会将所有记录解释为INSERT消息,如果底层数据库发生主键或唯一约束违规,INSERT操作可能会失败。
  • 示例代码 返回2023-08-15 17:00:00。加1天。 select dateadd( '2023-08-14 17:00:00', 1, 'dd'); 返回2025-04-14 17:00:00。加20个月,月份溢出,年份加1。 select dateadd('2023-08-14 17:00:00', 20, 'mm'); 返回2023-09-14 17:00:00。 select dateadd('2023-08-14 17:00:00', 1, 'mm'); 返回2023-09-14。 select dateadd('2023-08-14', 1, 'mm'); 假设当前时间为2023-08-14 17:00:00,返回2023-08-13 17:00:00。 select dateadd(getdate(),-1,'dd'); 返回NULL。 select dateadd(date '2023-08-14', 1, null);
  • 参数说明 表1 参数说明 参数 是否必选 参数类型 说明 date 是 DATE 或 STRING 代表起始日期。 支持以下格式: yyyy-mm-dd yyyy-mm-dd hh:mi:ss yyyy-mm-dd hh:mi:ss.ff3 delta 是 BIGINT 代表修改幅度。 datepart 是 BIGINT 代表修改的时间单位。 参数datepart支持扩展的日期格式:年-year、月-month或-mon、日-day和小时-hour。 YYYY或yyyy代表年份。 MM代表月份。 dd代表天。 HH代表24小时制时。 hh代表12小时制时。 mi代表分钟。 ss代表秒。 SSS代表毫秒
共100000条