华为云用户手册

  • 响应示例 { "server_group": { "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9", "name": "test", "policies": ["anti-affinity"], "members": [], "metadata": {} } }
  • 响应消息 响应参数如表2所示。 表2 响应参数 参数 参数类型 描述 server_group Object 弹性云服务器组信息,参考表3 server_group参数信息。 表3 server_group参数信息 参数 参数类型 描述 id String 弹性云服务器组UUID。 name String 弹性云服务器组名称。 policies Array of strings 弹性云服务器组类型。 members Array of strings 弹性云服务器组中包含的弹性云服务器的ID列表。 metadata Object 弹性云服务器组元数据。
  • 响应示例 响应示例请参见 响应(批量操作类)所示。 { "response": [ { "id": "616fb98f-46ca-475e-917e-2563e5a8cd19" }, { "id": "516fb98f-46ca-475e-917e-2563e5a8cd12" } ] }
  • 请求消息 请求参数如表2所示。 表2 请求参数 参数 参数类型 是否必选 描述 name String 是 弹性云服务器修改后的名称。 规则如下: 只能由中文字符、英文字母、数字及“_”、“-”、“.”组成,且长度为[1-128]个英文字符或[1-64]个中文字符。 批量修改弹性云服务器名称时,名不会自动按序增加数字尾缀。例如: 三个E CS 的名称为test_0001,test_0002,test_0003,批量修改弹性云服务器名称为develop,则修改后3个弹性云服务器名称为develop,develop,develop。 dry_run Boolean 否 是否只预检此次请求。 true:发送检查请求,不会修改云服务器名称。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回正常响应信息。 响应结构请参见 7.5.1 响应 所示。 false:发送正常请求,通过检查后并且执行修改云服务器名称的请求。 默认值:false servers Array of objects 是 待修改的弹性云服务器ID信息,详情请参见 表3。 表3 servers字段数据结构说明 参数 参数类型 是否必选 描述 id String 是 弹性云服务器ID。
  • 请求示例 批量修改ID为“260a0917-f7df-4b25-93ac-950da6c6b5d6”和“f6d8df1a-e257-48e2-b617-1dd92ced8c20”的云服务器的名称为“new-server-name”。 PUT https://{endpoint}/v1/{project_id}/cloudservers/server-name { "name": "new-server-name", "dry_run": false, "servers": [ { "id":"260a0917-f7df-4b25-93ac-950da6c6b5d6" }, { "id":"f6d8df1a-e257-48e2-b617-1dd92ced8c20" } ] }
  • 操作步骤 创建网卡。 创建网络。 接口相关信息 URI格式:POST /v1/{project_id}/vpcs 详情请参见创建网络。 请求示例 POST https://{Endpoint}/v1/{project_id}/vpcs {endpoint}信息请从地区和终端节点获取。 Body: { "vpc": { "name": "vpc", "description": "test", "cidr": "192.168.0.0/16" } } 响应示例 { "vpc": { "id": "99d9d709-8478-4b46-9f3f-2206b1023fd3", "name": "vpc", "description": "test", "cidr": "192.168.0.0/16", "status": "CREATING", "routes": [] } } 记录响应中“vpc”的ID。 创建子网。 接口相关信息 URI格式:POST /v2.0/subnets 详情请参见创建子网。 请求示例 POST https://{endpoint}/v2.0/subnets {endpoint}信息请从地区和终端节点获取。 Body: { "subnet": { "name": "testsubnet", "enable_dhcp": true, "network_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b", "tenant_id": "74610f3a5ad941998e91f076297ecf27", "dns_nameservers": [ "8.8.8.8", "8.8.8.7" ], "allocation_pools": [ { "start": "10.0.10.2", "end": "10.0.10.254" } ], "host_routes": [], "ip_version": 4, "gateway_ip": "10.0.10.1", "cidr": "10.0.10.0/24" } } 响应示例 { "subnet": { "name": "testsubnet", "cidr": "10.0.10.0/24", "id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5", "enable_dhcp": true, "network_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b", "tenant_id": "74610f3a5ad941998e91f076297ecf27", "dns_nameservers": [ "8.8.8.8", "8.8.8.7" ], "allocation_pools": [ { "start": "10.0.10.2", "end": "10.0.10.254" } ], "host_routes": [], "ip_version": 4, "gateway_ip": "10.0.10.1" } } 记录响应中“subnet”的ID。 创建端口。 接口相关信息 URI格式:POST /v2.0/ports 详情请参见创建端口。 请求示例 POST https://{endpoint}/v2.0/ports {endpoint}信息请从地区和终端节点获取。 Body: { "port": { "admin_state_up": true, "fixed_ips": [ { "subnet_id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5" } ], "name": "test", "network_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b", "tenant_id": "74610f3a5ad941998e91f076297ecf27" } } 响应示例 { "port": { "id": "7bf1c36f-e7f8-478a-be3d-674b486abbc4", "name": "test", "status": "DOWN", "admin_state_up": true, "fixed_ips": [ { "subnet_id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5", "ip_address": "10.0.10.233" } ], "mac_address": "fa:16:3e:db:91:f6", "network_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b", "tenant_id": "74610f3a5ad941998e91f076297ecf27", "device_id": "", "device_owner": "", "security_groups": [ "93031677-2895-4b83-855a-637e309aa9e6" ], "extra_dhcp_opts": [], "allowed_address_pairs": [], "binding:vnic_type": "normal", "binding:vif_details": {}, "binding:profile": {} } } 记录响应中“port”的ID。 挂载网卡。 接口相关信息 URI格式:POST /v1/{project_id}/cloudservers/{server_id}/nics 详情请参见“批量添加云服务器网卡”。 请求示例 POST https://{endpoint}/v1/74610f3a5ad941998e91f076297ecf27/cloudservers/9f4d9281-95e7-4915-a126-1ee597101e2e/nics {endpoint}信息请从地区和终端节点获取。 Body: { "nics": [ { "subnet_id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5" } ] } 响应示例 { "job_id": "ff80808288d41e1b018990260955686a" } 确认挂载结果。 接口相关信息 URI格式:GET /v1/{project_id}/cloudservers/{server_id}/os-interface 详情请参见查询云服务器网卡信息。 请求示例 GET https://{endpoint}/v1/74610f3a5ad941998e91f076297ecf27/cloudservers/9f4d9281-95e7-4915-a126-1ee597101e2e/os-interface {endpoint}信息请从地区和终端节点获取。 响应示例 { "interfaceAttachments": [ { "port_state": "ACTIVE", "fixed_ips": [ { "subnet_id": "46712fe4-25bd-4eae-874b-a528abfb76be", "ip_address": "192.168.0.50" } ], "net_id": "17251a8f-a671-4d7c-85d9-af5415962994", "port_id": "dd706739-b696-40be-a9f4-477ce478cb18", "mac_addr": "fa:16:3e:a5:e0:3c" }, { "port_state": "ACTIVE", "fixed_ips": [ { "subnet_id": "877b5567-e8c6-4a0d-aabf-0f13da225fe5", "ip_address": "10.0.10.233" } ], "net_id": "c4a3019d-1ac0-4cfb-a838-2342eb992e6b", "port_id": "7bf1c36f-e7f8-478a-be3d-674b486abbc4", "mac_addr": "fa:16:3e:db:91:f6" } ] }
  • API风格说明 当前ECS服务对外开放两类风格的API: ECS服务自定义规范的API(以下简称ECS API) 顺从OpenStack社区标准原生规范的API 两种风格不同,功能相近。OpenStack风格API主要用于满足您在开源生态工具方面的对接需求,在某些功能上ECS API在OpenStack社区的API基础上,做了功能增强。为了更好地使用OpenStack风格API,建议您提前了解OpenStack相关概念与知识。
  • 微版本号介绍 微版本说明:标识API中小的改动。当接口URI使用v2.1版本的时候,用户可以指定微版本号使用相应API的新功能。使用查询API版本信息列表(废弃),可以查询当前支持的主版本和支持的最大与最小的微版本。 微版本的使用说明:用户想要使用微版本特性,需要在请求Openstack接口时,在请求头中加入微版本头:X-OpenStack-Nova-API-Version或者Openstack-API-Version,例如使用微版本2.26需要在https的请求头中加入: X-OpenStack-Nova-API-Version: 2.26或Openstack-API-Version: compute 2.26 当用户使用v2.1接口不传入微版本头时,默认使用的微版本Openstack-API-Version: compute 2.1(X-OpenStack-Nova-API-Version: 2.1)。
  • 微版本请求样例 假设使用弹性云服务器详情信息列表API接口查询"OS-EXT-SRV-ATTR:hostname"字段。 使用v2接口,不加微版本号 GET: https://{Endpoint}/v2/74610f3a5ad941998e91f076297ecf27/servers/detail 其中{Endpoint}为 IAM 的终端节点,请参考终端节点获取。 Headers: Content-Type application/json X-Auth-Token ${token} 响应消息体: { "servers": [ { "tenant_id": "74610f3a5ad941998e91f076297ecf27", "addresses": { "05d4fb93-84e5-4964-853b-32992ffef627": [ { "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:20:17:95", "OS-EXT-IPS:type": "fixed", "addr": "192.168.0.228", "version": 4 }, { "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:20:17:95", "OS-EXT-IPS:type": "floating", "addr": "192.168.51.61", "version": 4 } ] }, "metadata": {}, "OS-EXT-STS:task_state": null, "OS-DCF:diskConfig": "MANUAL", "OS-EXT-AZ:availability_zone":"az1-dc1", "links": [ { "rel": "self", "href": "https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/89c312bb-285a-4026-a237-d441908c2f9e" }, { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/89c312bb-285a-4026-a237-d441908c2f9e" } ], "OS-EXT-STS:power_state": 1, "id": "89c312bb-285a-4026-a237-d441908c2f9e", "os-extended-volumes:volumes_attached": [ { "id": "c70c4b8e-33bd-4d1f-ab16-14a5a38cdeaf" } ], "OS-EXT-SRV-ATTR:host": "pod05.test.01", "image": { "links": [ { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/1189efbf-d48b-46ad-a823-94b942e2a000" } ], "id": "1189efbf-d48b-46ad-a823-94b942e2a000" }, "OS-SRV-USG:terminated_at": null, "accessIPv4": "", "accessIPv6": "", "created": "2018-05-11T03:21:56Z", "hostId": "fc7a8ff86bac050f0d9454b1b078dcc97060e819acbf06f04c3e338f", "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova012@7", "key_name": "id_rsa", "flavor": { "links": [ { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/flavors/s3.small.1" } ], "id": "s3.small.1" }, "security_groups": [ { "name": "default" } ], "config_drive": "", "OS-EXT-STS:vm_state": "active", "OS-EXT-SRV-ATTR:instance_name": "instance-0016c624", "user_id": "f79791beca3c48159ac2553fff22e166", "name": "zt-test", "progress": 0, "OS-SRV-USG:launched_at": "2018-05-11T03:22:16.701600", "updated": "2018-05-11T03:22:51Z", "status": "ACTIVE" } ] } 结论:响应消息体中没有"OS-EXT-SRV-ATTR:hostname"字段。 使用v2.1接口,加微版本号 GET: https://{Endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers/detail 其中{Endpoint}为IAM的终端节点,请参考终端节点获取。 Headers: Content-Type application/json X-Auth-Token ${token} X-OpenStack-Nova-API-Version 2.26 响应消息体: { "servers": [ { "tenant_id": "74610f3a5ad941998e91f076297ecf27", "addresses": { "05d4fb93-84e5-4964-853b-32992ffef627": [ { "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:20:17:95", "OS-EXT-IPS:type": "fixed", "addr": "192.168.0.228", "version": 4 }, { "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:20:17:95", "OS-EXT-IPS:type": "floating", "addr": "192.168.51.61", "version": 4 } ] }, "metadata": {}, "OS-EXT-STS:task_state": null, "description": "zt-test", "OS-EXT-SRV-ATTR:hostname": "zt-test", "OS-DCF:diskConfig": "MANUAL", "OS-EXT-AZ:availability_zone":"az-test-01", "links": [ { "rel": "self", "href": "https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/89c312bb-285a-4026-a237-d441908c2f9e" }, { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/servers/89c312bb-285a-4026-a237-d441908c2f9e" } ], "OS-EXT-STS:power_state": 1, "id": "89c312bb-285a-4026-a237-d441908c2f9e", "os-extended-volumes:volumes_attached": [ { "delete_on_termination": true, "id": "c70c4b8e-33bd-4d1f-ab16-14a5a38cdeaf" } ], "locked": false, "OS-EXT-SRV-ATTR:kernel_id": "", "OS-EXT-SRV-ATTR:host":"pod05.test.01" , "OS-EXT-SRV-ATTR:ramdisk_id": "", "image": { "links": [ { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/images/1189efbf-d48b-46ad-a823-94b942e2a000" } ], "id": "1189efbf-d48b-46ad-a823-94b942e2a000" }, "accessIPv4": "", "OS-SRV-USG:terminated_at": null, "accessIPv6": "", "OS-EXT-SRV-ATTR:launch_index": 0, "created": "2018-05-11T03:21:56Z", "OS-EXT-SRV-ATTR:user_data": null, "hostId": "fc7a8ff86bac050f0d9454b1b078dcc97060e819acbf06f04c3e338f", "OS-EXT-SRV-ATTR:reservation_id": "r-pbqmaxer", "OS-EXT-SRV-ATTR:root_device_name": "/dev/vda", "host_status": "UP", "OS-EXT-SRV-ATTR:hypervisor_hostname": "nova012@7", "tags": [], "key_name": "id_rsa", "flavor": { "links": [ { "rel": "bookmark", "href": "https://None/74610f3a5ad941998e91f076297ecf27/flavors/s3.small.1" } ], "id": "s3.small.1" }, "security_groups": [ { "name": "default" } ], "config_drive": "", "OS-EXT-STS:vm_state": "active", "OS-EXT-SRV-ATTR:instance_name": "instance-0016c624", "user_id": "f79791beca3c48159ac2553fff22e166", "name": "zt-test", "progress": 0, "OS-SRV-USG:launched_at": "2018-05-11T03:22:16.701600", "updated": "2018-05-11T03:22:51Z", "status": "ACTIVE" } ] } 结论:响应消息体中有"OS-EXT-SRV-ATTR:hostname"字段。
  • 版本号介绍 弹性云服务器所提供的接口分为ECS接口与OpenStack原生接口。推荐您使用ECS接口。 Openstack API可以使用v2和v2.1两个版本号,v2.1版本支持v2版本所有功能,且v2.1版本支持微版本。如果使用Openstack API推荐用户使用v2.1接口。 若使用v2版本的openstack API接口,只需要把对应的API接口URI中的v2.1版本号改为v2版本号即可。
  • 微版本响应样例 如果“version”和“min_version”这两个值为空字符串,说明此endpoint不支持微版本。其中: version: 最大微版本号。 min_version:最小微版本号。 客户端应该指定最大和最小微版本范围内的微版本号去访问endpoint。客户端通过以下HTTP header指定微版本号: X-OpenStack-Nova-API-Version: 2.4 从微版本2.27开始,也可以用以下header指定微版本: Openstack-API-Version: compute 2.27 如下响应样例中支持的最大微版本为“2.14”,最小微版本为“2.1”: { "versions": [ { "id": "v2.0", "links": [ { "href": "http://openstack.example.com/v2/", "rel": "self" } ], "status": "SUPPORTED", "version": "", "min_version": "", "updated": "2011-01-21T11:33:21Z" }, { "id": "v2.1", "links": [ { "href": "http://openstack.example.com/v2.1/", "rel": "self" } ], "status": "CURRENT", "version": "2.14", "min_version": "2.1", "updated": "2013-07-23T11:33:21Z" } ] }
  • OpenStack原生接口说明 表2 OpenStack原生接口说明 类型 说明 查询API版本信息 查询API版本信息列表 查询指定API版本信息 生命周期管理 包括弹性云服务器的创建、删除、修改、查询等接口。 状态管理 包括弹性云服务器的开机、关机、重启、锁定/解锁定、变更/回退变更规格等接口。 网络管理 查询租户、弹性云服务器的网络等接口。 镜像管理 包括删除、查询镜像等接口。 当前镜像管理API已废弃,请使用 镜像服务 接口。 安全组管理 包括添加、移除、查询、创建、更新、删除安全组及安全组规则等接口。 规格管理 查询弹性云服务器的规格列表、详情等接口。 网卡管理 包括添加、删除、查询弹性云服务器的网卡等接口。 磁盘管理 包括弹性云服务器的挂载、卸载、查询等接口。 元数据管理 包括更新、设置、删除、查询、获取、修改弹性云服务器元数据等接口。 租户配额管理 查询租户配额。 密钥、密码管理 包括查询、创建、删除SSH密钥等接口。 云服务器组管理 包括创建、查询、删除云服务器组等接口。 云服务器操作管理 包括查询云服务器操作行为列表、通过请求ID查询云服务器行为。 云服务器控制台管理 获取弹性云服务器的控制台日志等接口。 可用区 查询可用区列表。 标签管理 包括弹性云服务器一维标签的创建、删除、查询等接口。 浮动IP管理 包括分配、移除、创建、查询、删除浮动IP等接口。 当前浮动IP管理的API已废弃,请使用对应的网络服务接口。 快照管理 包括创建、查询、删除快照等接口。 当前快照管理的API已废弃,请使用对应的存储服务接口。
  • ECS接口说明 表1 ECS接口说明 类型 说明 生命周期管理 包括弹性云服务器的创建、删除、查询等接口。 状态管理 包括弹性云服务器的变更规格、重装/切换操作系统等接口。 批量操作 包括批量启动、重启、关闭、修改弹性云服务器等接口。 规格管理 查询规格详情、规格的扩展信息等。 网卡管理 批量添加、删除弹性云服务器的网卡。 给弹性云服务器网卡绑定、解绑定私有IP地址。 磁盘管理 包括弹性云服务器的挂载、卸载、查询等接口。 元数据管理 包括更新云服务器元数据和删除云服务器指定元数据的接口 租户配额管理 查询租户的配额,包括配额限制、已使用配额等接口。 查询Job状态 对于创建/删除云服务器、云服务器批量操作和网卡操作等异步API,可以通过该接口查询任务的执行状态。 标签管理 包括弹性云服务器二维标签的添加、删除、查询等接口。 支持批量添加、删除操作。 密码管理 一键重置弹性云服务器密码。 FPGA逻辑文件管理 包括注册、删除、查询FPGA镜像等接口,用于FPGA加速型云服务器。 云服务器组管理 包括创建、删除云服务器组接口、云服务器组添加成员、删除成员接口。 智能购买组管理 包括创建、修改、删除、查询智能购买组等接口。 规格推荐管理 包括地域推荐接口。
  • 使用流程 通过图1您可以了解如何在AI原生应用引擎创建数据集、创建微调任务、部署推理模型以及在线测试模型效果。 图1 模型调优流程 创建微调数据集 数据集是模型微调的基础,首先需要创建用于模型训练的数据集。 创建模型微调流水线 通过模型微调任务进行模型训练,微调任务结束后,将生成改进后的新模型。 部署模型 模型部署是通过为基座模型(即原模型)和微调后的新模型创建用于预测的模型服务的过程实现。 测试模型调优效果 在线测试微调后的模型(输入问题发起请求获取数据分析结果),可检验模型的准确性、可靠性及反应效果。 清除相应资源 对于不再需要使用的微调任务和模型服务,及时清除相应资源,避免不必要的扣费。
  • 构建版本 在左侧导航栏选择“流水线管理”,进入“流水线管理”页面。 在“流水线管理”页面,选择已创建版本的版本号“24.12.0.1”,单击“关联流水线”,在“关联流水线”页面,根据界面提示单击“立即前往”新建流水线,如图3所示。 图3 新建流水线 在“流水线管理”页面,单击“新建流水线”。 配置基本信息参数,参数说明如表2所示,单击“下一步”,选择“空模板”,单击“确定”,进入“任务编排”页面。 表2 参数说明 参数名称 参数说明 取值示例 名称 输入流水线名称。 Pipeline01 所属项目 服务所在项目。缺省值,不可修改。 - 流水线源 选择代码源。 Repo 创建方式 支持图形化编排、YAML化编排 图形化编排 代码仓 选择已创建的代码仓库。 Repo01 默认分支 选择默认分支。 master 根据需要配置流水线,然后单击“保存”。 进入“流水线管理”页面,单击右上角“关联流水线”。 在“关联流水线”页面,勾选已新建和配置完成的流水线,单击“确定”。 在流水线列表中,单击已关联的流水线所在行“操作”列的“执行”,单击“确定”,流水线开始构建版本的发布软件包。
  • 因欠费导致CDN服务不可用的情况排查 以下原因可能会导致您的账号因欠费而无法使用CDN服务: CDN按需计费,账户余额耗尽而欠费。 您使用了华为云其它服务,导致账户余额耗尽而欠费,此时如果您有需要扣除账户余额的CDN业务(按需计费无流量包、全站加速请求数计费等),也将因欠费而无法使用CDN。 欠费影响 当您的账户欠费后,华为云将根据您的客户等级来定义云服务资源保留期时长,更多欠费停服处理规则请参见保留期。 宽限期内CDN业务不会停止,但是不能新增加速 域名 。 应对措施 建议您设置余额预警,当账户余额小于一定额度时,CDN会通知您,详见如何设置余额预警阈值。 如果您购买了流量包,建议您开通流量包剩余使用量预警,当您的流量包余额到达预警阈值时,系统会发送短信、邮件提醒。 核销欠款 您可以在费用中心查看账户的欠费信息,并通过充值来核销欠款。 父主题: 购买计费
  • 云日志 服务地址说明 云日志服务首页,基础URL为: https://console.huaweicloud.com/lts/?region={regionId}&cfModuleHide=header_sidebar_floatlayer_rightsidebar#/cts/manager/groups 表3 参数说明表 参数名称 必填 类型 描述 regionId 是 String 区域ID,登录console页面后在浏览器的地址栏中获取。 日志搜索界面,基础URL为: https://console.huaweicloud.com/lts/?region={regionId}&cfModuleHide=header_sidebar_floatlayer_rightsidebar#/cts/logEventsLeftMenu/events?groupId={groupId}&topicId={topicId}&epsId={epsId}&hideHeader={hideHeader}&fastAnalysisCollapsed={fastAnalysisCollapsed}&hideDashboard={hideDashboard}&hideFeedback={hideFeedback}&isFoldLabel={isFoldLabel}&hideStreamName={hideStreamName}&showK8sFilter={showK8sFilter}&clusterId={clusterId}&hideBarChart={hideBarChart}&hideTabs={hideTabs}&condition={condition} 表4 参数说明表 参数名称 必填 类型 默认值 描述 regionId 是 String 无 区域ID,登录console页面后在浏览器的地址栏中获取。 groupId 是 String 无 日志组ID。 topicId 是 String 无 日志流ID。 epsId 否 String 无 日志流所属的企业项目ID,若无企业项目,值为0。 hideHeader 否 Boolean false 是否隐藏左侧列表及顶部横向日志流列表,如需隐藏,该参数值为true。 使用iframe内嵌场景才会生效,不使用iframe内嵌场景则不生效。 fastAnalysisCollapsed 否 Boolean false 是否收起快速分析,如需默认收起,该参数值为true。 hideDashboard 否 Boolean false 是否隐藏创建仪表盘图标,如需隐藏,该参数值为true。 hideFeedback 否 Boolean false 是否隐藏评价按钮,如需隐藏,该参数值为true。 isFoldLabel 否 Boolean true 控制日志表格中的label字段是否换行,如需换行展示,该参数值为true。 hideStreamName 否 Boolean false 是否隐藏日志流名称,如需隐藏,该参数值为true。 showK8sFilter 否 Boolean false 是否展示容器日志筛选,容器日志搜索场景下,可选择该参数为true,控制是否展示容器日志筛选条件。 clusterId 否 String 无 集群ID,showK8sFilter参数为true时,该参数必填。 hideBarChart 否 Boolean false 是否默认收起日志条数统计图,如需默认收起,该参数值为true。 hideTabs 否 Boolean false 是否隐藏“日志搜索、 日志分析 、实时日志”标签tabs,默认不隐藏。如需隐藏,该参数值为true。 hideShare 否 Boolean false 是否隐藏“分享”按钮,默认不隐藏。如需隐藏,该参数值为true。(当前仅华北-北京四局点支持该参数) keepOnline 否 Boolean false 是否保持登录状态。如需一直保持登录状态,不退出登录,该参数值为true。 condition 否 String 无 日志查询条件,如name:a and age:12 and addr:xx。 非必填 单个关键词形式为key:value 多个关键词用 and 隔开 关键词中不能包含英文分号(;)、英文冒号(:) 关键词中含有其他特殊字符如(+、=、?、#、%、&)需转换为十六进 图6 参数与界面对应关系图(仅供参考) 可视化日志搜索界面,基础URL为: https://console.huaweicloud.com/lts/?region={regionId}&cfModuleHide=header_sidebar_floatlayer_rightsidebar#/cts/logEventsLeftMenu/events?visualization=true&groupId={groupId}&topicId={topicId}&epsId={epsId}&sql={sql} 表5 参数说明表 参数名称 必填 类型 默认值 描述 regionId 是 String 无 区域ID,登录console页面后在浏览器的地址栏中获取。 groupId 是 String 无 日志组ID。 topicId 是 String 无 日志流ID。 epsId 否 String 无 日志流所属的企业项目ID,若无企业项目,值为0。 hideHeader 否 Boolean false 是否隐藏左侧列表及顶部横向日志流列表,如需隐藏,该参数值为true。 sql 否 String 无 SQL查询语句,如SELECT count (*)。 图7 参数与界面对应关系图(仅供参考) 仪表盘界面,基础URL为: https://console.huaweicloud.com/lts/?region={regionId}&cfModuleHide=header_sidebar_floatlayer_rightsidebar#/cts/manager/dashboard?dashboardId={dashboardId}&hideDashboardList={hideDashboardList}&showCurrentdashboardGroup={showCurrentdashboardGroup}&streamId={streamId}&streamDisabled={streamDisabled}&readonly={readonly}&filter=key1:value1,value2;key2:value3,value4&autoFresh={autoFresh} 表6 参数说明表 参数名称 必填 类型 默认值 描述 示例 regionId 是 String 无 区域ID,登录console页面后在浏览器的地址栏中获取。 region=xx-xx-xx dashboardId 否 String 无 需要展示的仪表盘ID,默认值为""。 使用场景:当用户需要默认展示某仪表盘时,可添加此参数。 dashboardId=xxxxxxxx hideDashboardList 否 Boolean false 是否隐藏仪表盘选择下拉列表:默认不隐藏,true表示隐藏。 使用场景:当用户需要隐藏仪表盘下拉列表时,可通过添加该参数且值为true来实现。 hideDashboardList=true showCurrentdashboardGroup 否 Boolean false 是否只展示当前仪表盘所在分组/模板:默认值为false。 使用场景:当用户只需要展示当前仪表盘分组/模板的仪表盘时,可通过添加该参数且值为true来实现。 注意:若hideDashboardList参数值为true时,当前参数无效。 showCurrentdashboardGroup=true streamId 否 String 无 日志流ID:默认值为""。 使用场景:只适用于仪表盘模板。当用户需要默认选中某日志流时,可添加该参数。 streamId=xxxxxx streamDisabled 否 Boolean false 日志流下拉框:默认可选择,true标识不可选择 使用场景:只适用于仪表盘模板。当用户需要置灰日志流下拉框时,可添加该参数。 streamDisabled=true filter 否 String 无 过滤器参数,值为要选中的过滤器的名称及选中项。 key1、key2为过滤器名称,value1、value2为过滤器key1需要选中的值,value3、value4为过滤器key2需要选中的值。多个过滤器按照;分隔,多个选中项按照,分隔。 使用场景:当用户内嵌仪表盘界面需要默认选中某些过滤器的key、value时,可添加该参数。 filter=key1:value1,value2;key2:value3,value4 readonly 否 Boolean false 是否是只读场景,只读场景下,操作类按钮会被隐藏。例如:新建过滤器、添加/修改/删除仪表盘等。 使用场景:当用户只需要展示仪表盘,不需要操作权限时,可添加该参数。 readonly=true autoFresh 否 String 无 定时刷新时长,默认值为""。 使用场景:当用户需要指定默认定时刷新时长时,可添加此参数,当前支持的定时刷新时长参数取值为:0m,1m,5m,15m之一,对应:不定时刷新、1分钟定时刷新、5分钟定时刷新、15分钟定时刷新。 autoFresh=1m 图8 参数与界面对应关系图(仅供参考)
  • 完整示例代码 直接复制如下样例代码到py文件中后,需要注意文件内容中的“\”后面可能会有unexpected character的问题。需要将“\”后面的缩进或是空格全部删除。 通过DataFrame API访问 # _*_ coding: utf-8 _*_ from __future__ import print_function from pyspark.sql.types import StructType, StructField, IntegerType, StringType from pyspark.sql import SparkSession if __name__ == "__main__": # Create a SparkSession session. sparkSession = SparkSession.builder.appName("datasource-rds").getOrCreate() # Set cross-source connection parameters. url = "jdbc:mysql://to-rds-1174404952-ZgPo1nNC.datasource.com:3306" dbtable = "test.customer" user = "root" password = "######" driver = "com.mysql.jdbc.Driver" # Create a DataFrame and initialize the DataFrame data. dataList = sparkSession.sparkContext.parallelize([(123, "Katie", 19)]) # Setting schema schema = StructType([StructField("id", IntegerType(), False),\ StructField("name", StringType(), False),\ StructField("age", IntegerType(), False)]) # Create a DataFrame from RDD and schema dataFrame = sparkSession.createDataFrame(dataList, schema) # Write data to the RDS. dataFrame.write \ .format("jdbc") \ .option("url", url) \ .option("dbtable", dbtable) \ .option("user", user) \ .option("password", password) \ .option("driver", driver) \ .mode("Append") \ .save() # Read data jdbcDF = sparkSession.read \ .format("jdbc") \ .option("url", url) \ .option("dbtable", dbtable) \ .option("user", user) \ .option("password", password) \ .option("driver", driver) \ .load() jdbcDF.show() # close session sparkSession.stop() 通过SQL API访问 # _*_ coding: utf-8 _*_ from __future__ import print_function from pyspark.sql import SparkSession if __name__ == "__main__": # Create a SparkSession session. sparkSession = SparkSession.builder.appName("datasource-rds").getOrCreate() # Createa data table for DLI - associated RDS sparkSession.sql( "CREATE TABLE IF NOT EXISTS dli_to_rds USING JDBC OPTIONS (\ 'url'='jdbc:mysql://to-rds-1174404952-ZgPo1nNC.datasource.com:3306',\ 'dbtable'='test.customer',\ 'user'='root',\ 'password'='######',\ 'driver'='com.mysql.jdbc.Driver')") # Insert data into the DLI data table sparkSession.sql("insert into dli_to_rds values(3,'John',24)") # Read data from DLI data table jdbcDF = sparkSession.sql("select * from dli_to_rds") jdbcDF.show() # close session sparkSession.stop()
  • 完整示例代码 通过SQL API访问 MRS 的OpenTSDB # _*_ coding: utf-8 _*_ from __future__ import print_function from pyspark.sql.types import StructType, StructField, StringType, LongType, DoubleType from pyspark.sql import SparkSession if __name__ == "__main__": # Create a SparkSession session. sparkSession = SparkSession.builder.appName("datasource-opentsdb").getOrCreate() # Create a DLI cross-source association opentsdb data table sparkSession.sql(\ "create table opentsdb_test using opentsdb options(\ 'Host'='10.0.0.171:4242',\ 'metric'='cts_opentsdb',\ 'tags'='city,location')") sparkSession.sql("insert into opentsdb_test values('aaa', 'abc', '2021-06-30 18:00:00', 30.0)") result = sparkSession.sql("SELECT * FROM opentsdb_test") result.show() # close session sparkSession.stop() 通过DataFrame API访问OpenTSDB # _*_ coding: utf-8 _*_ from __future__ import print_function from pyspark.sql.types import StructType, StructField, StringType, LongType, DoubleType from pyspark.sql import SparkSession if __name__ == "__main__": # Create a SparkSession session. sparkSession = SparkSession.builder.appName("datasource-opentsdb").getOrCreate() # Create a DLI cross-source association opentsdb data table sparkSession.sql( "create table opentsdb_test using opentsdb options(\ 'Host'='opentsdb-3xcl8dir15m58z3.cloudtable.com:4242',\ 'metric'='ct_opentsdb',\ 'tags'='city,location')") # Create a DataFrame and initialize the DataFrame data. dataList = sparkSession.sparkContext.parallelize([("aaa", "abc", 123456L, 30.0)]) # Setting schema schema = StructType([StructField("location", StringType()),\ StructField("name", StringType()),\ StructField("timestamp", LongType()),\ StructField("value", DoubleType())]) # Create a DataFrame from RDD and schema dataFrame = sparkSession.createDataFrame(dataList, schema) # Set cross-source connection parameters metric = "ctopentsdb" tags = "city,location" Host = "opentsdb-3xcl8dir15m58z3.cloudtable.com:4242" # Write data to the cloudtable-opentsdb dataFrame.write.insertInto("opentsdb_test") # ******* Opentsdb does not currently implement the ctas method to save data, so the save() method cannot be used.******* # dataFrame.write.format("opentsdb").option("Host", Host).option("metric", metric).option("tags", tags).mode("Overwrite").save() # Read data on CloudTable-OpenTSDB jdbdDF = sparkSession.read\ .format("opentsdb")\ .option("Host",Host)\ .option("metric",metric)\ .option("tags",tags)\ .load() jdbdDF.show() # close session sparkSession.stop()
  • 完整示例代码 通过SQL API访问MRS HBase 未开启kerberos认证样例代码 # _*_ coding: utf-8 _*_ from __future__ import print_function from pyspark.sql.types import StructType, StructField, IntegerType, StringType, BooleanType, ShortType, LongType, FloatType, DoubleType from pyspark.sql import SparkSession if __name__ == "__main__": # Create a SparkSession session. sparkSession = SparkSession.builder.appName("datasource-hbase").getOrCreate() sparkSession.sql( "CREATE TABLE testhbase(id STRING, location STRING, city STRING) using hbase OPTIONS (\ 'ZKHost' = '192.168.0.189:2181',\ 'TableName' = 'hbtest',\ 'RowKey' = 'id:5',\ 'Cols' = 'location:info.location,city:detail.city')") sparkSession.sql("insert into testhbase values('95274','abc','Jinan')") sparkSession.sql("select * from testhbase").show() # close session sparkSession.stop() 开启kerberos认证样例代码 # _*_ coding: utf-8 _*_ from __future__ import print_function from pyspark import SparkFiles from pyspark.sql import SparkSession import shutil import time import os if __name__ == "__main__": # Create a SparkSession session. sparkSession = SparkSession.builder.appName("Test_HBase_SparkSql_Kerberos").getOrCreate() sc = sparkSession.sparkContext time.sleep(10) krb5_startfile = SparkFiles.get("krb5.conf") keytab_startfile = SparkFiles.get("user.keytab") path_user = os.getcwd() krb5_endfile = path_user + "/" + "krb5.conf" keytab_endfile = path_user + "/" + "user.keytab" shutil.copy(krb5_startfile, krb5_endfile) shutil.copy(keytab_startfile, keytab_endfile) time.sleep(20) sparkSession.sql( "CREATE TABLE testhbase(id string,booleanf boolean,shortf short,intf int,longf long,floatf float,doublef double) " + "using hbase OPTIONS(" + "'ZKHost'='10.0.0.146:2181'," + "'TableName'='hbtest'," + "'RowKey'='id:100'," + "'Cols'='booleanf:CF1.booleanf,shortf:CF1.shortf,intf:CF1.intf,longf:CF2.longf,floatf:CF1.floatf,doublef:CF2.doublef'," + "'krb5conf'='" + path_user + "/krb5.conf'," + "'keytab'='" + path_user+ "/user.keytab'," + "'principal'='krbtest') ") sparkSession.sql("insert into testhbase values('95274','abc','Jinan')") sparkSession.sql("select * from testhbase").show() # close session sparkSession.stop() 通过DataFrame API访问HBase # _*_ coding: utf-8 _*_ from __future__ import print_function from pyspark.sql.types import StructType, StructField, IntegerType, StringType, BooleanType, ShortType, LongType, FloatType, DoubleType from pyspark.sql import SparkSession if __name__ == "__main__": # Create a SparkSession session. sparkSession = SparkSession.builder.appName("datasource-hbase").getOrCreate() # Createa data table for DLI-associated ct sparkSession.sql(\ "CREATE TABLE test_hbase(id STRING, location STRING, city STRING, booleanf BOOLEAN, shortf SHORT, intf INT, longf LONG,floatf FLOAT,doublef DOUBLE) using hbase OPTIONS ( \ 'ZKHost' = 'cloudtable-cf82-zk3-pa6HnHpf.cloudtable.com:2181,\ cloudtable-cf82-zk2-weBkIrjI.cloudtable.com:2181,\ cloudtable-cf82-zk1-WY09px9l.cloudtable.com:2181',\ 'TableName' = 'table_DupRowkey1',\ 'RowKey' = 'id:5,location:6,city:7',\ 'Cols' = 'booleanf:CF1.booleanf,shortf:CF1.shortf,intf:CF1.intf,longf:CF1.longf,floatf:CF1.floatf,doublef:CF1.doublef')") # Create a DataFrame and initialize the DataFrame data. dataList = sparkSession.sparkContext.parallelize([("11111", "aaa", "aaa", False, 4, 3, 23, 2.3, 2.34)]) # Setting schema schema = StructType([StructField("id", StringType()), StructField("location", StringType()), StructField("city", StringType()), StructField("booleanf", BooleanType()), StructField("shortf", ShortType()), StructField("intf", IntegerType()), StructField("longf", LongType()), StructField("floatf", FloatType()), StructField("doublef", DoubleType())]) # Create a DataFrame from RDD and schema dataFrame = sparkSession.createDataFrame(dataList, schema) # Write data to the cloudtable-hbase dataFrame.write.insertInto("test_hbase") # Set cross-source connection parameters TableName = "table_DupRowkey1" RowKey = "id:5,location:6,city:7" Cols = "booleanf:CF1.booleanf,shortf:CF1.shortf,intf:CF1.intf,longf:CF1.longf,floatf:CF1.floatf,doublef:CF1.doublef" ZKHost = "cloudtable-cf82-zk3-pa6HnHpf.cloudtable.com:2181,cloudtable-cf82-zk2-weBkIrjI.cloudtable.com:2181, cloudtable-cf82-zk1-WY09px9l.cloudtable.com:2181" # Read data on CloudTable-HBase jdbcDF = sparkSession.read.schema(schema)\ .format("hbase")\ .option("ZKHost", ZKHost)\ .option("TableName",TableName)\ .option("RowKey", RowKey)\ .option("Cols", Cols)\ .load() jdbcDF.filter("id = '12333' or id='11111'").show() # close session sparkSession.stop()
  • 通过DataFrame API访问数据源 连接配置。 1 2 3 4 val url = "jdbc:postgresql://to-dws-1174405057-EA1Kgo8H.datasource.com:8000/postgres" val username = "dbadmin" val password = "######" val dbtable = "customer" 创建DataFrame,添加数据,并重命名字段。 1 2 3 4 var dataFrame_1 = sparkSession.createDataFrame(List((8, "Jack_1", 18))) val df = dataFrame_1.withColumnRenamed("_1", "id") .withColumnRenamed("_2", "name") .withColumnRenamed("_3", "age") 导入数据到DWS。 1 2 3 4 5 6 7 df.write.format("jdbc") .option("url", url) .option("dbtable", dbtable) .option("user", username) .option("password", password) .mode(SaveMode.Append) .save() SaveMode 有四种保存类型: ErrorIfExis:如果已经存在数据,则抛出异常。 Overwrite:如果已经存在数据,则覆盖原数据。 Append:如果已经存在数据,则追加保存。 Ignore:如果已经存在数据,则不做操作。这类似于SQL中的“如果不存在则创建表”。 读取DWS上的数据。 方式一:read.format()方法 1 2 3 4 5 6 val jdbcDF = sparkSession.read.format("jdbc") .option("url", url) .option("dbtable", dbtable) .option("user", username) .option("password", password) .load() 方式二:read.jdbc()方法 1 2 3 4 val properties = new Properties() properties.put("user", username) properties.put("password", password) val jdbcDF2 = sparkSession.read.jdbc(url, dbtable, properties) 插入数据前: 插入数据后: 使用上述read.format()或者read.jdbc()方法读取到的dateFrame注册为临时表,就可使用sql语句进行数据查询了。 1 2 jdbcDF.registerTempTable("customer_test") sparkSession.sql("select * from customer_test where id = 1").show() 查询结果:
  • 完整示例代码 通过DataFrame API 访问 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 # _*_ coding: utf-8 _*_ from __future__ import print_function from pyspark.sql.types import StructType, StructField, IntegerType, StringType from pyspark.sql import SparkSession if __name__ == "__main__": # Create a SparkSession session. sparkSession = SparkSession.builder.appName("datasource-redis").getOrCreate() # Set cross-source connection parameters. host = "192.168.4.199" port = "6379" table = "person" auth = "######" # Create a DataFrame and initialize the DataFrame data. # ******* method noe ********* dataList = sparkSession.sparkContext.parallelize([(1, "Katie", 19),(2,"Tom",20)]) schema = StructType([StructField("id", IntegerType(), False),StructField("name", StringType(), False),StructField("age", IntegerType(), False)]) dataFrame_one = sparkSession.createDataFrame(dataList, schema) # ****** method two ****** # jdbcDF = sparkSession.createDataFrame([(3,"Jack", 23)]) # dataFrame = jdbcDF.withColumnRenamed("_1", "id").withColumnRenamed("_2", "name").withColumnRenamed("_3", "age") # Write data to the redis table dataFrame.write.format("redis").option("host", host).option("port", port).option("table", table).option("password", auth).mode("Overwrite").save() # Read data sparkSession.read.format("redis").option("host", host).option("port", port).option("table", table).option("password", auth).load().show() # close session sparkSession.stop() 通过SQL API 访问 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # _*_ coding: utf-8 _*_ from __future__ import print_function from pyspark.sql import SparkSession if __name__ == "__main__": # Create a SparkSession sparkSession = SparkSession.builder.appName("datasource_redis").getOrCreate() sparkSession.sql( "CREATE TEMPORARY VIEW person (name STRING, age INT) USING org.apache.spark.sql.redis OPTIONS (\ 'host' = '192.168.4.199', \ 'port' = '6379',\ 'password' = '######',\ 'table'= 'person')".stripMargin); sparkSession.sql("INSERT INTO TABLE person VALUES ('John', 30),('Peter', 45)".stripMargin) sparkSession.sql("SELECT * FROM person".stripMargin).collect().foreach(println) # close session sparkSession.stop()
  • 通过DataFrame API访问数据源 构造schema 1 2 3 4 5 6 7 8 9 10 val attrId = new StructField("id",StringType) val location = new StructField("location",StringType) val city = new StructField("city",StringType) val booleanf = new StructField("booleanf",BooleanType) val shortf = new StructField("shortf",ShortType) val intf = new StructField("intf",IntegerType) val longf = new StructField("longf",LongType) val floatf = new StructField("floatf",FloatType) val doublef = new StructField("doublef",DoubleType) val attrs = Array(attrId, location,city,booleanf,shortf,intf,longf,floatf,doublef) 根据schema的类型构造数据 1 2 val mutableRow: Seq[Any] = Seq("12345","abc","city1",false,null,3,23,2.3,2.34) val rddData: RDD[Row] = sparkSession.sparkContext.parallelize(Array(Row.fromSeq(mutableRow)), 1) 导入数据到HBase 1 sparkSession.createDataFrame(rddData, new StructType(attrs)).write.insertInto("test_hbase") 读取HBase上的数据 1 2 3 4 5 6 7 8 val map = new mutable.HashMap[String, String]() map("TableName") = "table_DupRowkey1" map("RowKey") = "id:5,location:6,city:7" map("Cols") = "booleanf:CF1.booleanf,shortf:CF1.shortf,intf:CF1.intf,longf:CF1.longf,floatf:CF1.floatf,doublef:CF1.doublef" map("ZKHost")="cloudtable-cf82-zk3-pa6HnHpf.cloudtable.com:2181, cloudtable-cf82-zk2-weBkIrjI.cloudtable.com:2181, cloudtable-cf82-zk1-WY09px9l.cloudtable.com:2181" sparkSession.read.schema(new StructType(attrs)).format("hbase").options(map.toMap).load().show() 返回结果:
  • 完整示例代码 通过DataFrame API 访问 from __future__ import print_function from pyspark.sql.types import StructType, StructField, IntegerType, StringType from pyspark.sql import SparkSession if __name__ == "__main__": # Create a SparkSession session. sparkSession = SparkSession.builder.appName("datasource-mongo").getOrCreate() # Create a DataFrame and initialize the DataFrame data. dataList = sparkSession.sparkContext.parallelize([("1", "Katie", 19),("2","Tom",20)]) # Setting schema schema = StructType([StructField("id", IntegerType(), False),StructField("name", StringType(), False), StructField("age", IntegerType(), False)]) # Create a DataFrame from RDD and schema dataFrame = sparkSession.createDataFrame(dataList, schema) # Setting connection parameters url = "192.168.4.62:8635,192.168.5.134:8635/test?authSource=admin" uri = "mongodb://username:pwd@host:8635/db" user = "rwuser" database = "test" collection = "test" password = "######" # Write data to the mongodb table dataFrame.write.format("mongo") .option("url", url)\ .option("uri", uri)\ .option("user",user)\ .option("password",password)\ .option("database",database)\ .option("collection",collection) .mode("Overwrite").save() # Read data jdbcDF = sparkSession.read.format("mongo") .option("url", url)\ .option("uri", uri)\ .option("user",user)\ .option("password",password)\ .option("database",database)\ .option("collection",collection)\ .load() jdbcDF.show() # close session sparkSession.stop() 通过SQL API 访问 from __future__ import print_function from pyspark.sql import SparkSession if __name__ == "__main__": # Create a SparkSession session. sparkSession = SparkSession.builder.appName("datasource-mongo").getOrCreate() # Createa data table for DLI - associated mongo sparkSession.sql( "create table test_dds(id string, name string, age int) using mongo options(\ 'url' = '192.168.4.62:8635,192.168.5.134:8635/test?authSource=admin',\ 'uri' = 'mongodb://username:pwd@host:8635/db',\ 'database' = 'test',\ 'collection' = 'test', \ 'user' = 'rwuser', \ 'password' = '######')") # Insert data into the DLI-table sparkSession.sql("insert into test_dds values('3', 'Ann',23)") # Read data from DLI-table sparkSession.sql("select * from test_dds").show() # close session sparkSession.stop()
  • 应用发布后,在运行态为什么看不到构建的模型数据? 当您在应用设计态完成数据模型的构建与发布后,单击应用设计态右上方的“应用发布”,系统会生成该应用的代码包。 图1 应用发布 此时,您需要前往,将该应用的代码包部署至数据建模引擎。 图2 应用部署 应用部署成功后,应用运行态会自动加载应用的代码包,初始化状态下,加载的代码包为您在应用设计态构建的数据模型数据。 更多关于应用部署的操作,请参见部署应用。 父主题: 数据建模引擎相关问题
  • 枚举、合法值和参考对象的区别是什么? 表1 枚举、合法值和参考对象的区别 类型 描述 适用场景 枚举 将变量的值一一列出,而变量的值只限于列举出来的值的范围内。 适用于几乎没有变化的通用属性。 例如,枚举类型为性别,其枚举值为男和女。 合法值 使用具体变量的值校验自定义数据的合法规则,包含文本、整型、长整型、浮点型、人员五种类型。 适用于经常变化的通用属性。 例如,合法值类型为人员,合法值为张三、李四和王五。 参考对象 当您创建一个对象并给它赋一个变量时,这个变量仅参考该对象,而不是表示对象本身。 适用于复杂、不具备强管理,可归为一类的场景。 例如,文艺汇演可根据节日分为元旦文艺汇演、五四青年文艺汇演、国庆文艺汇演、春节文艺汇演等,一个文艺汇演又包含了各类表演节目、表演顺序等,这种呈树状结构的场景。 父主题: 数据建模引擎相关问题
  • 数据建模引擎支持哪些层级的缓存? 数据建模引擎(xDM Foundation,简称xDM-F)提供如下类型的缓存能力。 表1 支持的缓存 类型 功能描述 适用场景 配置说明 二级缓存 实体级的缓存。开启二级缓存后,xDM-F会将该实体的实例数据缓存至临时存储空间中。当您在调用该实体提供的接口时,会直接从临时存储空间中读取缓存数据,有效避免数据库典型的N+1级联查询问题。 适用于如下场景: 多个实体间相互访问 多个接口调用相同数据 xDM-F默认开启二级缓存功能。 您可以在应用设计态的数据模型管理中,对自定义的数据实体/关系实体手动关闭此功能。 更多信息请参见数据模型管理。 三级缓存 接口级的缓存,当两次查询接口的入参完全相同时,第二次查询请求会直接使用缓存信息。 适用于如下场景: 会被大量/重复访问的接口 在一定时间内数据不会变化的接口 对数据时效性要求不高的接口 xDM-F默认关闭三级缓存功能。 您可以通过在API请求头中手动添加“thirdCacheClosed”参数,并设定值为“false”,开启三级缓存。 请注意,如果您同时开启了二级缓存和三级缓存,xDM-F会优先使用三级缓存。 父主题: 数据建模引擎相关问题
  • 如何查看数据建模引擎的版本号? 数据建模引擎的版本号格式为:a.b.c.d,版本号具体含义如下: 表1 版本号含义 版本号 含义 a 架构版本,代表了版本有较大的变动。 b 版本发布的年份。 c 版本发布的月份和基线版本数的组合,代表了版本中一些功能的变动。 d 补丁编号,代表了版本中问题修复。 您可以通过如下方式查看当前应用的版本号: 表2 查看版本号 方式 说明 通过应用设计态查看 登录应用设计态,单击顶部导航栏右上方的,在展开的窗口中即可查看。如下图所示: 图1 版本号(设计态) 通过应用运行态查看 登录应用运行态,单击顶部导航栏右上方的,在展开的窗口中即可查看。如下图所示: 图2 版本号(运行态) 通过应用代码查看 下载应用代码,具体操作请参见应用发布。 解压缩应用代码包,找到并打开“releaseNote.md”文件即可查看。 路径为:“应用的英文名称\rdm-应用的英文名称\releaseNote.md”。 通过JAR包查看 下载JAR包,具体操作请参见应用发布。 解压缩JAR包,找到并打开“releaseNote.md”文件即可查看。 通过SDK查看 下载SDK,具体操作请参见应用发布应用发布。 解压缩SDK,找到并打开“releaseNote.md”文件即可查看。 路径为:“lib\releaseNote.md”。 父主题: 数据建模引擎相关问题
  • 什么是源端映射和目标端映射? 从数据入图的数据流向来理解这两个概念。在配置映射前需确保已通过“基础数据管理”创建好数据源信息。 数据入图的终点就是图数据库,因此目标端映射就是图数据映射,即定义图标签和数据实体的对应关系。您可通过开启“构建表”直接达成这个对应关系。 源端映射就是定义数据的来源。通过定义数据来源的数据库、Schema、表以及表内字段和实体的属性映射等,可实现多样化的入图方式。 父主题: 数字主线引擎相关问题
  • 账号类型问题导致无法登录 故障现象:账号类型使用错误导致无法登录。 定位原因: 根据应用部署的数据建模引擎类型,以及数据建模引擎部署的位置不同,检查登录时使用的账号类型是否正确。如果账号类型不对,请参考创建iDME操作用户和应用运行态登录方式。 如果应用部署在公有云场景下的体验版数据建模引擎上,请使用华为账号下的IAM用户登录应用运行态。 如果应用部署在公有云场景下的基础版数据建模引擎上,请使用组织成员账号和对应密码登录应用运行态。 如果应用部署在边缘云场景下的基础版数据建模引擎上,请使用SSF用户登录应用运行态。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全