云服务器内容精选

  • 静态数据 参考登录AstroCanvas界面中操作,登录AstroCanvas界面。 在编辑页面状态下,选中组件,单击组件上方的。 在数据类型中,选择“静态数据”。 图1 选择静态数据 根据业务需求自定义静态数据,也可直接使用系统预置的数据,单击“保存”。 您可以通过“Excel模式”和“Json模式”两种模式设置静态数据。设置为“Excel模式”时,可执行如下操作: 单击“文件导入”,可将本地的数据导入到当前组件中使用。仅支持导入 CS V和Excel格式的文件,且文件大小不能超过100KB。 执行导入操作前,请单击“?”,查看当前组件对静态数据字段的要求。例如,玫瑰花饼图要求静态数据必须存在“s”和“value”字段列。如果不存在,右侧的“图表预览”将无法正常渲染。 图2 查看组件静态数据字段要求 图3 配置中无字段 单击“保存为静态数据集”,可将当前使用的静态数据保存为数据集。 图4 将静态数据保存为数据集 在弹出的提示页面,如果单击“确定”,可将当前组件的“数据类型”修改为静态数据保存后的数据集。 图5 将组件数据替换为数据集
  • 开通DIS服务 注册云服务账号。 开通DIS服务。 使用DIS服务之前必须先充值,才能正常使用DIS服务。 登录DIS管理控制台。 单击页面右上角的“费用”。 单击“充值”,系统自动跳转到充值窗口。 根据界面提示信息,对账户进行充值。 充值成功后,关闭充值窗口,返回管理控制台首页。 单击“ 数据接入服务 ”,开通服务。 创建访问密钥。 DIS通过用户账户中的AK和SK进行签名验证,确保通过授权的账户才能访问指定的DIS资源。 登录DIS控制台。 单击页面右上角的用户名,选择“我的凭证”。 “我的凭证”页面,单击“管理访问密钥”区域下方的“新增访问密钥”。 根据界面提示输入相关信息并保存新创建的访问密钥。 每个用户最多可创建两个有效的访问密钥。 为防止访问密钥泄露,建议您将其保存到安全的位置。如果用户在此提示框中单击“取消”,则不会下载密钥,后续也将无法继续下载,用户必须将此密钥删除后再创建新的访问密钥。 父主题: 开通DIS
  • Json格式上传流式数据 参见初始化DIS客户端的操作初始化一个DIS客户端实例。 配置参数如下: 1 streamname="dis-test1"| #已存在的通道名 putRecords_sample.py文件中的putRecords_test方法中的records为需要上传的数据内容,数据上传格式如下: 1234 records=[{"data": "abcdefd", "partition_id": “shardId-0000000001”}]#"data":"xxx"为上传的数据值,请自定义;“partition_id”:“shardId-0000000001”为数据写入的分区id值,请自定义。 record1 = {"data": "xxx","partition_id": partition_id} #可写入多条数据,数据格式如record1所示,每写一条数据使用下面的append方法传入records中。 配置好以上参数后,执行putRecords_sample.py文件调用putRecords_test方法,响应结果如下: 12 200{'failed_record_count': 0, 'records': [{'partition_id': 'shardId-0000000001', 'sequence_number': '15'}]} 父主题: 使用SDK(Python)
  • 参数说明 表2 参数说明 参数名 参数类型 说明 partitionId String 分区ID。 说明: 请根据上传流式数据的执行结果,控制台的返回信息字段,例如 “partitionId [shardId-0000000000]”进行定义。 startingSequenceNumber String 序列号。序列号是每个记录的唯一标识符。序列号由DIS在数据生产者调用PutRecords操作以添加数据到DIS数据通道时DIS服务自动分配的。同一分区键的序列号通常会随时间变化增加。PutRecords请求之间的时间段越长,序列号越大。 说明: 请根据上传流式数据的执行结果,控制台的返回信息字段,例如“sequenceNumber [1]”进行定义。 cursorType String 游标类型。 AT_SEQUENCE_NUMBER:从特定序列号(即startingSequenceNumber定义的序列号)所在的记录开始读取数据。此类型为默认游标类型。 AFTER_SEQUENCE_NUMBER:从特定序列号(即startingSequenceNumber定义的序列号)后的记录开始读取数据。 TRIM_HORIZON:从最早被存储至分区的有效记录开始读取。 例如,某租户使用DIS的通道,分别上传了三条数据A1,A2,A3。N天后(设定A1已过期,A2和A3仍在有效期范围内),该租户需要下载数据,并选择了TRIM_HORIZON这种下载方式。那么用户可下载的数据将从A2开始读取。 LATEST:从分区中的最新记录开始读取,此设置可以保证你总是读到分区中最新记录。 AT_TIMESTAMP:从特定时间戳(即timestamp定义的时间戳)开始读取。
  • 背景信息 下载流式数据,需要确定从分区的什么位置开始获取(即获取游标)。确定起始位置后,再循环获取数据。 获取游标有如下五种方式: AT_SEQUENCE_NUMBER AFTER_SEQUENCE_NUMBER TRIM_HORIZON LATEST AT_TIMESTAMP 为更好理解游标类型,您需要了解如下几个基本概念。 序列号(sequenceNumber),每个记录的唯一标识符。序列号由DIS在数据生产者调用PutRecord操作以添加数据到DIS数据通道时DIS服务自动分配的。同一分区键的序列号通常会随时间变化增加。PutRecords请求之间的时间段越长,序列号越大。 每个分区的sequenceNumber从0开始持续增长,每条数据对应唯一的sequenceNumber,超过生命周期后此sequenceNumber将过期不可用。(例如上传一条数据到新分区,其sequenceNumber起始为0,上传100条之后,则最后一条的sequenceNumber为99;如超过生命周期之后,0~99的数据则不可用) 分区的数据有效范围可以通过调用describeStream(查询通道详情)接口获取,其sequenceNumberRange代表数据有效范围,第一个值为最老数据的sequenceNumber,最后一个值为下一条上传数据的sequenceNumber(最新数据的sequenceNumber为此值-1) 例如[100, 200],表示此分区总共上传了200条数据,其中第0~99条已过期,有效的最老数据为100,最新数据为199,下一条上传数据的sequenceNumber为200。
  • DIS概述 数据接入服务(Data Ingestion Service)为处理或分析流数据的自定义应用程序构建数据流管道,主要解决云服务外的数据实时传输到云服务内的问题。数据接入服务每小时可从数十万种数据源(如日志和定位追踪事件、网站点击流、社交媒体源等)中连续捕获、传送和存储数TB数据。 云服务实现了在多地域部署基础设施,具备高度的可扩展性和可靠性,用户可根据自身需要指定地域使用DIS服务,由此获得更快的访问速度和实惠的服务价格。 DIS对数据传输所需要的基础设置、存储、网络和配置进行管理。您无需为数据通道担心配置、部署、持续的硬件维护等。此外,DIS还可在云区域同步复制数据,为您提供数据高可用性和数据持久性。
  • 内容导航 SDK开发指南指导您如何安装和配置开发环境、如何通过调用DIS SDK提供的接口函数进行二次开发。 章节 内容 DIS SDK能做什么 内容导航 简要介绍DIS的概念和DIS SDK的概念。 SDK下载 兼容性 如何校验软件包完整性? 介绍使用DIS SDK进行二次开发过程中涉及到的资源信息。 开通DIS服务 介绍DIS服务和DIS通道的开通方式。 获取认证信息 介绍使用DIS SDK进行二次开发前需要进行的初始化工作。 Python:准备环境~~获取数据游标 介绍使用DIS SDK进行的常用操作(匹配python)。 Java:准备环境~~变更分区数量 介绍使用DIS SDK进行的常用操作(匹配java)。 DIS服务端错误码 介绍使用DIS SDK过程中遇到异常时的响应信息。 父主题: 简介
  • 获取数据游标 参考初始化DIS客户端的操作初始化一个DIS客户端实例,实例名称为dic。 使用DIS SDK获取数据游标信息。 1 2 3 4 5 6 7 8 910111213141516 // 配置通道名称String streamName = "myStream";// 配置数据下载分区IDString partitionId = "0";// 配置下载数据序列号String startingSequenceNumber = "0";// 配置下载数据方式String cursorType = PartitionCursorTypeEnum.AT_SEQUENCE_NUMBER.name();GetPartitionCursorRequest request = new GetPartitionCursorRequest();request.setStreamName(streamName);request.setPartitionId(partitionId);request.setStartingSequenceNumber(startingSequenceNumber);request.setCursorType(cursorType);GetPartitionCursorResult response = dic.getPartitionCursor(request);String cursor = response.getPartitionCursor(); 父主题: 使用SDK(Java)
  • 新增Checkpoint 参考初始化DIS客户端的操作初始化一个DIS客户端实例,实例名称为dic。 使用DIS SDK创建Checkpoint,需要指定通道名称、APP名称、分区编号、序列号以及Checkpoint类型。 其中,“streamName”的配置值要与开通DIS通道中“Stream Name”的值一致。 1 2 3 4 5 6 7 8 910111213 // 通道名称 String streamName = "myStream"; // APP名称String appName = "myApp";CommitCheckpointRequest commitCheckpointRequest = new CommitCheckpointRequest();commitCheckpointRequest.setStreamName(streamName);commitCheckpointRequest.setAppName(appName);// 需要提交的sequenceNumbercommitCheckpointRequest.setSequenceNumber("100");// 分区编号commitCheckpointRequest.setPartitionId("0");// Checkpoint类型commitCheckpointRequest.setCheckpointType(CheckpointTypeEnum.LAST_READ.name()); 配置“CommitCheckpointRequest”对象之后,通过调用 commitCheckpoint 提交checkpoint。 dic.commitCheckpoint(commitCheckpointRequest); 父主题: 使用SDK(Java)
  • 查询通道详情 参考初始化DIS客户端的操作初始化一个DIS客户端实例,实例名称为dic。 使用DIS SDK查询指定通道信息。 1234 String streamName = "myStream";DescribeStreamRequest describeStreamRequest = new DescribeStreamRequest();describeStreamRequest.setStreamName(streamName);System.out.println("descStream: " + JsonUtils.objToJson(dic.describeStream(describeStreamRequest))); 查询通道的返回信息如下。 1 descStream: DescribeStreamResult [streamId=JnYbsMfWNn81e8n2mOC, streamName=myStream, createTime=1540977519187, lastModifiedTime=1540977519983, retentionPeriod=24, status=RUNNING, streamType=ADVANCED, dataType=BLOB, writablePartitionCount=2, readablePartitionCount=2, partitions=[PartitionResult{partitionId='shardId-0000000000', hashRange='[0 : 4611686018427387902]', status='ACTIVE', parentPartitionIds='null', sequenceNumberRange='[0 : 13286444]'}, PartitionResult{partitionId='shardId-0000000001', hashRange='[4611686018427387903 : 9223372036854775807]', status='ACTIVE', parentPartitionIds='null', sequenceNumberRange='[0 : 13288589]'}], hasMorePartitions=false, updatePartitionCounts=null] 父主题: 使用SDK(Java)
  • 创建通道 参考初始化DIS客户端的操作初始化一个DIS客户端实例,实例名称为dic。 使用DIS SDK创建DIS通道,需要指定通道名称、通道的分片数量以及通道类型。 其中,普通通道为“STREAM_TYPE_COMMON”,高级通道为“STREAM_TYPE_ADVANCED”。 1 2 3 4 5 6 7 8 9101112 CreateStreamRequest createStreamRequest = new CreateStreamRequest();// 通道名称String streamName = "myStream";createStreamRequest.setStreamName(streamName);// 通道类型: COMMON 普通通道; ADVANCED 高级通道createStreamRequest.setStreamType(StreamType.COMMON.name());// 通道的分片数量createStreamRequest.setPartitionCount(3);// 通道数据的保留时长: 单位小时,N*24,N的取值为1~7的整数createStreamRequest.setDataDuration(24);// 通道的源数据类型:缺省值:BLOBcreateStreamRequest.setDataType(DataTypeEnum.BLOB.name()); 配置“CreateStreamRequest”对象之后,通过调用createStream的方法创建通道。 1 dic.createStream(createStreamRequest); 父主题: 使用SDK(Java)
  • 操作步骤 使用“WinSCP”工具将“huaweicloud-sdk-dis-x.x.x.zip”上传至Linux系统任一目录。 x.x.x表示DIS SDK包的版本号。 使用“PuTTY”工具登录Linux系统,进入到“huaweicloud-sdk-dis-x.x.x.zip”所在目录,执行如下命令,获取DIS SDK压缩包的校验码。 sha256sum huaweicloud-sdk-dis-x.x.x.zip 显示类似如下校验码: # sha256sum dis-sdk-x.x.x.zip8be2c937e8d78b1a9b99777cee4e7131f8bf231de3f839cf214e7c5b5ba3c088 huaweicloud-sdk-dis-x.x.x.zip 打开DIS SDK的校验文件“huaweicloud-sdk-dis-x.x.x.zip.sha256sum”与上一步骤中获取的校验码进行对比。 一致,说明从获取的DIS SDK压缩包没被篡改。 不一致,说明DIS SDK压缩包被篡改,需要重新获取。
  • Protobuf格式上传流式数据 参见初始化DIS客户端的操作初始化一个DIS客户端实例。 初始化DIS客户端,加入一项参数bodySerializeType,如下所示: cli = disclient(endpoint='', ak=os.environ.get("HUAWEICLOUD_SDK_AK"), sk=os.environ.get("HUAWEICLOUD_SDK_SK"), projectid='', region='',bodySerializeType='protobuf') 配置参数如下: 1 streamname="dis-test1" #已存在的通道名 参照该文件中的test方法,bodySerializeType="protobuf"选取protobuf格式上传。 protobuf_putRecords_sample.py文件中的protobuf_putRecords_test方法中的records为需要上传的数据内容,数据上传格式如下: 1234 records=[{"data": "abcdefd", "partition_id": “shardId-0000000001”}]#"data":"xxx"为上传的数据值,请自定义;“partition_id”:“shardId-0000000001”为数据写入的分区id值,请自定义。 record1 = {"data": "xxx","partition_id": partition_id} #可写入多条数据,数据格式如record1所示,每写一条数据使用下面的append方法传入records中。 配置好以上参数后,执行protobuf_putRecords_sample.py文件调用protobuf_putRecords_test方法,响应结果下: 12 200{'failed_record_count': 0, 'records': [{'partition_id': 'shardId-0000000001', 'sequence_number': '15'}]} 父主题: 使用SDK(Python)
  • 查询转储列表 参考初始化DIS客户端的操作初始化一个DIS客户端实例,实例名称为dic。 使用DIS SDK查询指定通道的转储任务列表。 1234 ListTransferTasksRquest request = new ListTransferTasksRquest();// 指定待查询的通道名称request.setStreamName(streamName); 配置“ListTransferTaskRequest”对象之后,通过调用listTransferTask的方法查询指定通道的转储任务列表。 1 ListTransferTasksResult result = dic.listTransferTasks(request); 查询转储任务列表的返回信息如下。 1 2 3 4 5 6 7 8 910111213141516171819 { "tasks":[ { "destination_type":" DLI ", "task_name":"task_Ztab", "create_time":1552457808502, "state":"RUNNING", "last_transfer_timestamp":1552458085454 }, { "destination_type":"OBS", "task_name":"task_qTd9", "create_time":1552355757885, "state":"RUNNING", "last_transfer_timestamp":1552458158527 } ], "total_number":2} 父主题: 使用SDK(Java)
  • 查询转储详情 参见初始化DIS客户端的操作初始化一个DIS客户端实例。 配置参数如下: 12 streamname="dis-test1"#已存在的通道名task_name="test_1" #查询该通道下的xx转储任务 配置好以上参数后,执行describe_dump_task_sample.py文件默认调用describe_dump_task_test方法。 返回信息如下: 12 200{'state': 'RUNNING', 'stream_name': 'dis-test1', 'create_time': 1537949648144, 'last_transfer_timestamp': 1538018072564, 'destination_type': 'OBS', 'obs_destination_description': {'obs_bucket_path': '002', 'deliver_time_interval': 30, 'retry_duration': 0, 'agency_name': 'all', 'partition_format': 'yyyy/MM/dd/HH/mm', 'destination_file_type': 'text', 'record_delimiter': '|', 'consumer_strategy': 'LATEST', 'file_prefix': ''}, 'task_name': 'test_1', 'partitions': [{'state': 'RUNNING', 'discard': 0, 'last_transfer_offset': 500, 'partitionId': 'shardId-0000000000', 'last_transfer_timestamp': 1538018072564}, {'state': 'RUNNING', 'discard': 0, 'last_transfer_offset': 500, 'partitionId': 'shardId-0000000001', 'last_transfer_timestamp': 1538018072564}]} 父主题: 使用SDK(Python)