华为云用户手册

  • DLI Flink作业支持哪些数据格式和数据源? DLI Flink作业支持如下数据格式: Avro,Avro_merge,BLOB, CS V,EMAIL,JSON,ORC,Parquet,XML。 DLI Flink作业支持如下数据源: CloudTable HBase,CloudTable OpenTSDB, CSS Elasticsearch,DCS,DDS,DIS,DMS,DWS,EdgeHub, MRS HBase,MRS Kafka,开源Kafka,文件系统,OBS,RDS, SMN 表1 数据格式和支持的输入输出流 数据格式 支持的输入流 支持的输出流 Avro - OBS输出流 Avro_merge - OBS输出流 BLOB DIS输入流 MRS Kafka输入流 开源Kafka输入流 - CSV DIS输入流 OBS输入流 开源Kafka输入流 DIS输出流 OBS输出流 DWS输出流(通过OBS方式转储) 开源Kafka输出流 文件系统输出流 EMAIL DIS输入流 - JSON DIS输入流 OBS输入流 MRS Kafka输入流 开源Kafka输入流 DIS输出流 OBS输出流 MRS Kafka输出流 开源Kafka输出流 ORC - OBS输出流 DWS输出流(通过OBS方式转储) Parquet - OBS输出流 文件系统输出流 XML DIS输入流 - 父主题: Flink作业咨询类
  • 跨源访问MRS HBase,连接超时,日志未打印错误怎么办? 用户在跨源连接中没有添加集群主机信息,导致KRB认证失败,故连接超时,日志也未打印错误。 建议您重新配置主机信息后再重试访问MRS HBase。 在“增强型跨源”页面,单击该连接“操作”列中的“修改主机信息”,在弹出的对话框中,填写主机信息。 格式:“IP 主机名/ 域名 ”,多条信息之间以换行分隔。 MRS主机信息获取,详细请参考《 数据湖探索 用户指南》中的“修改主机信息”章节描述。 父主题: 增强型跨源连接类
  • 执行查询语句报错:The current account does not have permission to perform this operation,the current account was restricted. Restricted for no budget. 该提示信息说明您可能因账户欠费获余额不足导致操作受限。 解决方案: 检查账户状态。 请先确认是否欠费,如有欠费请充值。 重新登录账户。 如果充值后仍然提示相同的错误,请退出账号后重新登录。 父主题: SQL作业运维类
  • count函数如何进行聚合 使用count函数进行聚合的正确用法如下: SELECT http_method, count(http_method) FROM apigateway WHERE service_id = 'ecs' Group BY http_method 或者 SELECT http_method FROM apigateway WHERE service_id = 'ecs' DISTRIBUTE BY http_method 错误用法:将会报错。 SELECT http_method, count(http_method) FROM apigateway WHERE service_id = 'ecs' DISTRIBUTE BY http_method 父主题: SQL作业开发类
  • 对两个表进行join操作时,提示:SQL_ANALYSIS_ERROR: Reference 't.id' is ambiguous, could be: t.id, t.id.; 出现这个提示,表示进行join操作的两个表中包含相同的字段,但是在执行命令时,没有指定该字段的归属。 例如:在表tb1和tb2中都包含字段“id”。 错误的命令: select id from tb1 join tb2; 正确的命令: select tb1.id from tb1 join tb2; 父主题: SQL作业运维类
  • 怎样将老版本的Spark队列切换成通用型队列 当前DLI服务包括“SQL队列”和“通用队列”两种队列类型。 其中,“SQL队列”用于运行SQL作业,“通用队列”兼容老版本的Spark队列,用于运行Spark作业和Flink作业。 通过以下步骤,可以将老版本的“Spark队列”转换为新的“通用队列”。 重新购买“通用队列”。 将在旧的“Spark队列”中的作业迁移到新的“通用型队列”中,即在提交Spark作业时指定新的队列。 释放旧的“Spark队列”,即删除或退订队列。 父主题: DLI弹性资源池和队列类
  • 提交SQL作业时,返回“unsupported media Type”信息 在DLI提供的REST API中,可以在请求URI中附加请求消息头,例如:Content-Type。 “Content-Type”为消息体的类型(格式),默认取值为“application/json”。 提交SQL作业的URI为:POST /v1.0/{project_id}/jobs/submit-job 其“Content-Type”只支持“application/json”,若设置为“text”则会报错,报错信息为“unsupported media Type”。 父主题: DLI API类
  • 解决方案 示列:创建RDS跨源,使用时报“communication link failure”错误。 将原有跨源连接删除重新创建。再次创建时,必须确保所选“安全组”、“虚拟私有云”、“子网””和“目的地址”与RDS中的设置完全一致。 请选择正确的“服务类型”,本示例中为“RDS”。 图1 创建经典型跨源连接-RDS 检查安全组网络(vpc)配置。 若按照步骤1重建跨源连接后还是报错“communication link failure”,则检查vpc配置。 经典型跨源: 入方向规则:检查本安全组内的入方向网段及端口是否已开放,若没有则添加。 检查网段及端口是否配置。 图2 检查网段及端口是否配置 如果不存在,则进行添加。 图3 添加入方向规则 出方向规则:检查出方向规则网段及端口是否开放(建议所有网段开放)。 检查网段及端口是否配置。 图4 检查网段及端口是否配置。 如果不存在,则进行添加。 图5 添加出方向规则 增强型跨源 检查DLI队列对应网段是否开放,若没有,则在vpc中添加出方向网段。 在DLI服务找到跨源连接绑定队列对应的网段 图6 查找跨源连接绑定队列对应的网段 在虚拟私有 云安全 组中查看DLI队列对应的网段是否已配置。 图7 查看vpc中对应安全组中DLI队列对应网段 如果没有配置,则进行添加。 图8 在VPC中添加对应网段 如果按照上述步骤检查之后,还是存在问题,请联系技术人员提供帮助。
  • 用户通过CTAS创建hive表报schema解析异常错误 目前DLI支持hive语法创建TEXTFILE、SEQUENCEFILE、RCFILE、ORC、AVRO、PARQUET文件类型的表。 如果用户CTAS建表指定的文件格式为AVRO类型,而且直接使用数字作为查询语句(SELECT)的输入,如“CREATE TABLE tb_avro STORED AS AVRO AS SELECT 1”则会报schema解析异常。 此问题的原因是如果不指定列名,则会把SELECT后的内容同时作为列名和插入值,而AVRO格式的表不支持列名为数字,所以会报解析schema异常错误。 您可以通过“CREATE TABLE tb_avro STORED AS AVRO AS SELECT 1 AS colName”指定列名的方式解决该问题,或者将存储格式指定为除AVRO以外的其它格式。 父主题: SQL作业运维类
  • 提示OBS Bucket没有授权怎么办? DLI更新委托后,将原有的dli_admin_agency升级为dli_management_agency。 dli_management_agency包含跨源操作、 消息通知 、用户授权操作所需的权限,除此之外的其他委托权限需求,都需自定义DLI委托。 授权DLI读写OBS的权限并不包含在的DLI委托dli_management_agency中。需要您创建自定义委托,并将委托配置在作业中(使用Flink 1.15和Spark 3.3及以上版本的引擎执行作业时需要配置)。 了解dli_management_agency请参考DLI委托概述。 创建自定义委托并在作业中配置委托的操作步骤请参考自定义DLI委托权限。 父主题: DLI权限管理类
  • Flink Jar作业上传配置文件操作流程 自定义(JAR)作业支持上传配置文件。 将配置文件通过程序包管理上传到DLI; 在Flink jar作业的其他依赖文件参数中,选择创建的DLI程序包; 在代码中通过ClassName.class.getClassLoader().getResource("userData/fileName")加载该文件。 ClassName”为需要访问该文件的类名。 userData为固定文件路径名,不支持修改或自定义其他路径名。 fileName为需要访问的文件名。 本节示例适用于Flink 1.12版本。Flink 1.15版本的Jar作业开发指导请参考Flink Jar写入数据到OBS开发指南。
  • DLI使用SMN主题,提示SMN主题不存在,怎么处理? 设置DLI Flink作业的运行参数时,勾选“作业异常告警”参数,可在作业出现运行异常或者欠费情况时,将作业异常告警信息,以SMN的方式通知用户。 如果遇到提示SMN主题不存在您可以按照以下步骤进行排查: 确认SMN主题是否已经创建。 如果未创建,请在SMN服务管理控制台创建一个新的主题。 如何自定义SMN主题,请参见《消息通知服务用户指南》中“创建主题”章节。 检查 IAM 权限。 如果SMN主题已经存在,但仍然提示不存在,请进入 统一身份认证 服务(IAM),选择对应子账户所在的用户组,确保该用户组已添加相应Region的SMN策略。 确认主题名称和区域。 确保您在DLI中配置的SMN主题名称和区域与实际创建的SMN主题一致。如果SMN主题名称不一致也会导致系统提示SMN主题不存在。 父主题: Flink作业咨询类
  • 如何获取项目ID? 项目ID是系统所在区域的ID。用户在调用API接口进行云资源管理(如创建集群)时,需要提供项目ID。 查看项目ID步骤如下: 注册并登录华为云管理控制台。 将鼠标移动到右上角用户名上,在下拉列表中单击“我的凭证”。 在“我的凭证”页面的项目列表中查看项目ID。例如project_id:"5a3314075bfa49b9ae360f4ecd333695"。 父主题: DLI API类
  • 如何获取AK/SK? 访问密钥即AK/SK(Access Key ID/Secret Access Key),表示一组密钥对,用于验证调用API发起请求的访问者身份,与密码的功能相似。用户通过调用API接口进行云资源管理(如创建集群)时,需要使用成对的AK/SK进行加密签名,确保请求的机密性、完整性和请求双方身份的正确性。获取AK/SK操作步骤如下: 注册并登录华为云管理控制台。 将鼠标移动到右上角用户名上,在下拉列表中单击“我的凭证”。 在左侧导航栏单击“访问密钥”。 单击“新增访问密钥”,进入“新增访问密钥”页面。 根据提示输入对应信息,单击“确定”,在弹出的提示页面单击“立即下载”。 下载成功后,打开凭证文件,获取AK/SK信息。 为防止访问密钥泄露,建议您将其保存到安全的位置。 父主题: DLI API类
  • RDS表有自增主键时怎样在DLI插入数据? 在DLI中创建关联RDS表时,如果RDS表包含自增主键或其他自动填充字段,您在DLI中插入数据时可以采取以下措施: 插入数据时省略自增字段:在DLI中插入数据时,对于自增主键字段或其他自动填充的字段,您可以在插入语句中省略这些字段。数据库会自动为这些字段生成值。例如,如果表中有一个名为id的自增主键字段,您可以在插入数据时不包含这个字段,数据库会自动为新插入的行分配一个唯一的id值。 使用NULL值:如果您需要在插入数据时明确指定某些字段由数据库自动填充,可以在这些字段的位置填写NULL。这样,数据库会识别到这些字段应该由系统自动生成值,而不是由用户指定。 父主题: 增强型跨源连接类
  • 什么是区域、可用区? 区域和可用区用于描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
  • 如何选择区域? 选择区域时,您需要考虑以下几个因素: 地理位置 一般情况下,建议就近选择靠近您或者您的目标用户的区域,这样可以减少网络时延,提高访问速度。不过,在基础设施、BGP网络品质、资源的操作与配置等方面,中国大陆各个区域间区别不大,如果您或者您的目标用户在中国大陆,可以不用考虑不同区域造成的网络时延问题。 香港、曼谷等其他地区和国家提供国际带宽,主要面向非中国大陆地区的用户。如果您或者您的目标用户在中国大陆,使用这些区域会有较长的访问时延,不建议使用。 在除中国大陆以外的亚太地区有业务的用户,可以选择“中国-香港”、“亚太-曼谷”或“亚太-新加坡”区域。 在非洲地区有业务的用户,可以选择“南非-约翰内斯堡”区域。 在欧洲地区有业务的用户,可以选择“欧洲-巴黎”区域。 资源的价格 不同区域的资源价格可能有差异,请参见华为云服务价格详情。
  • 方案2:Spark Jar作业设置获取AK/SK 获取结果为AK/SK时,设置如下: 代码创建SparkContext val sc: SparkContext = new SparkContext() sc.hadoopConfiguration.set("fs.obs.access.key", ak) sc.hadoopConfiguration.set("fs.obs.secret.key", sk) 代码创建SparkSession val sparkSession: SparkSession = SparkSession .builder() .config("spark.hadoop.fs.obs.access.key", ak) .config("spark.hadoop.fs.obs.secret.key", sk) .enableHiveSupport() .getOrCreate() 获取结果为AK/SK和Securitytoken时,鉴权时,临时AK/SK和Securitytoken必须同时使用,设置如下: 代码创建SparkContext val sc: SparkContext = new SparkContext() sc.hadoopConfiguration.set("fs.obs.access.key", ak) sc.hadoopConfiguration.set("fs.obs.secret.key", sk) sc.hadoopConfiguration.set("fs.obs.session.token", sts) 代码创建SparkSession val sparkSession: SparkSession = SparkSession .builder() .config("spark.hadoop.fs.obs.access.key", ak) .config("spark.hadoop.fs.obs.secret.key", sk) .config("spark.hadoop.fs.obs.session.token", sts) .enableHiveSupport() .getOrCreate()
  • (推荐)方案1:使用临时AK/SK 建议使用临时AK/SK,获取方式可参见统一身份认证服务_获取临时AK/SK。 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 表1 DLI获取访问凭据相关开发指南 类型 操作指导 说明 FLink作业场景 Flink Opensource SQL使用DEW管理访问凭据 Flink Opensource SQL场景使用DEW管理和访问凭据的操作指导,将Flink作业的输出数据写入到Mysql或DWS时,在connector中设置账号、密码等属性。 Flink Jar 使用DEW获取访问凭证读写OBS 访问OBS的AKSK为例介绍Flink Jar使用DEW获取访问凭证读写OBS的操作指导。 用户获取Flink作业委托临时凭证 DLI提供了一个通用接口,可用于获取用户在启动Flink作业时设置的委托的临时凭证。该接口将获取到的该作业委托的临时凭证封装到com.huaweicloud.sdk.core.auth.BasicCredentials类中。 本操作介绍获取Flink作业委托临时凭证的操作方法。 Spark作业场景 Spark Jar 使用DEW获取访问凭证读写OBS 访问OBS的AKSK为例介绍Spark Jar使用DEW获取访问凭证读写OBS的操作指导。 用户获取Spark作业委托临时凭证 本操作介绍获取Spark Jar作业委托临时凭证的操作方法。
  • 用户导表到OBS报“path obs://xxx already exists”错误 该提示信息说明您将数据导出到一个已经存在的OBS路径。 解决方案: 新建OBS目录。 您可以新建一个不存在的OBS目录用于存储导出的数据。 删除已存在的OBS目录。 删除已存在的OBS目录后,目录下的所有数据将会被删除。请谨慎执行此删除操作。 检查目录权限 确保您已具备访问和写入该OBS路径的权限。如果权限缺失可以联系管理员添加对应的OBS桶权限。 父主题: SQL作业运维类
  • OBS表压缩率较高怎么办? 当您在提交导入数据到DLI表的作业时,如果遇到Parquet/Orc格式的OBS表对应的文件压缩率较高,超过了5倍的压缩率,您可以通过调整配置来优化作业的性能。 具体方法:在submit-job请求体conf字段中配置“dli.sql.files.maxPartitionBytes=33554432”。 该配置项默认值为128MB,将其配置成32MB,可以减少单个任务读取的数据量,避免因过高的压缩比,导致解压后单个任务处理的数据量过大。 但调整这个参数可能会影响到作业的执行效率和资源消耗,因此在做调整时需要根据实际的数据量和压缩率来选择适合的参数值。 父主题: DLI数据库和表类
  • 字符码不一致导致数据乱码怎么办? 在DLI执行作业时,为了避免因字符编码不一致导致的乱码问题,建议您统一数据源的编码格式。 DLI服务只支持UTF-8文本格式,因此在执行创建表和导入操作时,用户的数据需要以UTF-8编码。 在将数据导入DLI之前,确保源数据文件(如CSV、JSON等)是以UTF-8编码保存的。如果数据源不是UTF-8编码,请在导入前提前转换为UTF-8编码。 父主题: DLI数据库和表类
  • 场景1:主库执行了大事务 大事务一般指一个事务中包含大量的数据更新操作,例如一个事务包含几万次DML(insert,update,delete)操作、一条SQL语句批量更新了上万行数据等,大事务往往本身的执行时间很长(分钟级)。当主实例执行了大事务后,会产生大量的Binlog日志,备机或只读节点拉取这些Binlog耗时比一般事务长,且至少需要花费与主实例相同的时间来回放这些事务的更新,从而导致备机或只读节点出现复制延迟。 排查方法: 对于包含大量DML语句的大事务,使用如下命令,找到长时间执行的事务。 select t.*,to_seconds(now())-to_seconds(t.trx_started) idle_time from INFORMATION_SCHEMA.INNODB_TRX t \G; 对于一条SQL语句执行大量数据的大事务,执行show full processlist,查找是否存在长时间执行的delete或update语句。 分析全量日志或慢日志,检查是否有大事务。 解决方法: 为了保证主从数据的一致性,需要等待大事务执行完成,主备复制延迟才能恢复。 业务侧避免此类大事务,可以将大事务拆分为小事务,分批执行。例如,通过where条件或limit语句限制每次要更新的数据量。
  • 场景2:对无主键表更新 RDS for MySQL的Binlog采用row格式,对每一行的数据更新,都会形成row格式Binlog event记录。例如:一个update语句更新100行数据,那么row格式的Binlog中会形成100行update记录,备机或只读回放时会执行100次单行update。 只读节点和备机在回放主库的Binlog event时,会根据表的主键或者唯一二级索引来检索需要更改的行。如果对应表未创建主键,则会产生大量的全表扫描,从而降低了Binlog日志的应用速度,产生复制延迟。 排查方法: 通过show create table xxx,分析执行慢的update和delete语句对应的表,分析是否有主键。 解决方法: 给无主键表增加主键,或者酌情增加唯一二级索引。
  • 场景4:只读实例等待MDL锁 只读实例上往往有业务流量,如果存在只读长事务正在执行,会阻塞主实例同步过来的相应表的DDL操作,卡在了表MDL锁获取,进而阻塞所有同表的后续Binlog回放,导致复制延迟越来越大。 排查方法: 登录只读节点,使用如下命令,观察是否有长时间执行的事务。 select t.*,to_seconds(now())-to_seconds(t.trx_started) idle_time from INFORMATION_SCHEMA.INNODB_TRX t \G; 查看只读节点的MDL锁视图,观察是否有MDL锁冲突。 select * from information_schema.metadata_lock_info; 根据MDL锁视图中的线程ID,找到阻塞的session。更多信息,请参见MDL锁视图。 解决方法: kill只读节点上阻塞DDL操作的长事务,或者在业务侧提交该长事务。
  • 场景描述 主备实例对用户的数据库会自动建立复制关系,用户创建或迁移上云的数据库一般会在几分钟内开始建立复制关系,完成的时间取决于数据库的大小。 有一些场景可能需要解除复制关系执行配置,然后再重新建立复制关系,如下所示。 临时解除复制关系。在修改数据库名称、设置快照隔离级别、设置数据库属性等操作需要临时解除复制关系。不然会有类似如下报错: 图1 报错信息 较长时间解除复制关系(不推荐)。有些库对性能要求极高吞吐量极大,需要不建立复制关系下工作等。
  • 解决方案 暂时解除复制关系 非2017企业版的实例 执行如下SQL解除某个库的复制关系。 alter database [@DBName] set partner off [@DBName]:指定需要解除复制关系的库名。 解除复制关系后的操作需要和该语句在一个批处理中执行,解除复制关系后,系统会尽快自动重建该库的复制关系,不需要手动执行SQL重建。 2017企业版的实例 执行存储过程将数据库移出可用性组。详细内容可参考将自定义数据库移出可用性组。 EXEC rdsadmin.dbo.rds_remove_database_from_ag '@DBName'; @DBName:需要移除的自定义数据库名称。 示例: 将数据库testDB_1从可用性组[AG-RDS-YUN]中移除。 EXEC rdsadmin.dbo.rds_remove_database_from_ag 'testDB_1'; 解除复制关系并且要求不再自动建立(不推荐) 参考1,可以解除复制关系,如果不想让系统自动建立复制关系,可以将数据库的恢复模式(recovery model)改为Simple,参考如下两种方式。 登录S SMS (SQL Server Managerment Studio)客户端,选择目标数据库,右键属性,查看Recovery model,修改Recovery model为Simple。 执行SQL语句修改 alter database [db1] set recovery simple with no_wait 设置为Simple模式后不会产生增量备份,将不能进行表级时间点恢复。如果想恢复建立复制关系。需要将Recovery model 设置为full。 alter database [db1] set recovery full with no_wait 数据库auto close属性为True时不会建立复制关系,并且不会产生复制关系异常的告警。 需要将auto close属性关闭设置为False,才能重新自动建立复制关系。 alter database [db1] set auto_close off with no_wait
  • 计费构成分析 包年/包月费用: 2023/10/15 10:30:00~2023/10/27 10:30:00,应用实例数为5的运维中心专业版套餐包计费,时长为12天。 2023/10/27 10:30:00~2023/11/15 23:59:59,应用实例数为8的运维中心专业版套餐包计费,时长为19天。 运维中心专业版套餐包单价:500元/实例/月,这里套餐包单价为示例,具体以购买页面为准。 由此可见,在10月份和11月份,一共产生的费用为:500元/实例/月*5实例*(12天/31天)月+500元/实例/月*8实例*(19天/30天)月=3501.08元。
  • 计费示例 假设您在2023/10/17 10:49:04购买了时长为1个月的应用实例数为5的运维中心专业版套餐包,并在到期前手动续费1个月,则: 第一个计费周期为:2023/10/17 10:49:04 ~ 2023/11/17 23:59:59 第二个计费周期为:2023/11/17 23:59:59 ~ 2023/12/17 23:59:59 您需要为每个计费周期预先付费,计费公式如表2所示。 表2 计费公式 资源类型 计费公式 资源单价 运维中心专业版 应用实例数量*套餐包单价*购买时长 请参见购买页面中的套餐包单价。
  • 计费说明 开发中心/运维中心/运营中心的计费项如表1所示。 表1 开发中心/运维中心/运营中心的计费项说明 套餐包类型 说明 计费项 适用的计费模式 计费公式 开发中心专业版 支持统一应用架构建模、产品/版本/个人级协作管理、一站式开发工具链、研发效能洞察、海量资产模板。 开发中心用户数 包年/包月 用户数量*套餐包单价*购买时长 运维中心专业版 支持视界监控服务、纪实日志服务、追踪者调用链服务、先知告警服务、智维AIOps、蓝军故障演练服务。 应用实例数 包年/包月 应用实例数量*套餐包单价*购买时长 运维中心服务扩展包 运维中心规格扩展 日志、span、短信 包年/包月 扩展包数量*购买时长 运营中心专业版 支持多类型数据源接入、大数据计算引擎、数十种开箱即用指标模板、自定义运营视图、3个看板|20个指标。 事件量 包年/包月 事件量*套餐包单价*购买时长 运营中心看板增量包 运营中心看板扩展 看板数 包年/包月 看板数量*增量包单价*购买时长 运营中心指标增量包-10个指标 运营中心指标扩展 10个指标 包年/包月 增量包数量*增量包单价*购买时长 运营中心指标增量包-100个指标 运营中心指标扩展 100个指标 包年/包月 增量包数量*增量包单价*购买时长
共100000条