云服务器内容精选

  • 返回结果 表2 返回结果 类型 说明 GetResult 参数解释: SDK公共结果对象。 表3 GetResult 参数名称 参数类型 描述 status int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 reason str 参数解释: HTTP文本描述。 默认取值: 无 errorCode str 参数解释: OBS服务端错误码,当status参数小于300时为空。 默认取值: 无 errorMessage str 参数解释: OBS服务端错误描述,当status参数小于300时为空。 默认取值: 无 requestId str 参数解释: OBS服务端返回的请求ID。 默认取值: 无 indicator str 参数解释: OBS服务端返回的错误定位码。 默认取值: 无 hostId str 参数解释: 请求的服务端ID,当status参数小于300时为空。 默认取值: 无 resource str 参数解释: 发生错误时相关的桶或对象,当status参数小于300时为空。 默认取值: 无 header list 参数解释: 响应消息头列表,由多个元组构成。每个元组均包含两个元素,代表响应头的键值对。 默认取值: 无 body object 参数解释: 操作成功后的结果数据,当status大于300时为空。该值根据调用接口的不同而不同,参见“桶相关接口”章节和“对象相关接口”章节的详细描述。 默认取值: 无 表4 GetResult.body GetResult.body类型 说明 DeleteObjectResponse 参数解释: 删除对象响应结果。详见DeleteObjectResponse。 表5 DeleteObjectResponse 参数名称 参数类型 描述 deleteMarker bool 参数解释: 标识删除的对象是否是删除标记。 取值范围: true:是删除标记。 false:不是删除标记。 默认取值: false versionId str 参数解释: 对象的版本号,用于删除指定版本号的对象。例如:G001117FCE89978B0000401205D5DC9。 取值范围: 长度为32的字符串。 默认取值: 无,如果不设置则默认删除最新版本的对象。
  • 接口约束 您必须是桶拥有者或拥有删除对象的权限,才能删除对象。建议使用 IAM 或桶策略进行授权,如果使用IAM则需授予obs:object:DeleteObject权限,如果使用桶策略则需授予DeleteObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 桶没有开启多版本控制功能时,已删除的对象不可恢复,请谨慎操作。
  • 请求参数 表1 请求参数列表 参数名称 参数类型 是否必选 描述 bucketName str 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 objectKey str 必选 参数解释: 目标对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 versionId str 可选 参数解释: 对象的版本号,用于删除指定版本号的对象。例如:G001117FCE89978B0000401205D5DC9。 取值范围: 长度为32的字符串。 默认取值: 无,如果不设置则默认删除最新版本的对象。 extensionHeaders dict 可选 参数解释: 接口的拓展头域。 取值范围: 参考自定义头域。 默认取值: 无
  • 返回结果说明 类型 说明 GetResult 参数解释: SDK公共结果对象。 表8 GetResult 参数名称 参数类型 描述 status int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 reason str 参数解释: HTTP文本描述。 默认取值: 无 errorCode str 参数解释: OBS服务端错误码,当status参数小于300时为空。 默认取值: 无 errorMessage str 参数解释: OBS服务端错误描述,当status参数小于300时为空。 默认取值: 无 requestId str 参数解释: OBS服务端返回的请求ID。 默认取值: 无 indicator str 参数解释: OBS服务端返回的错误定位码。 默认取值: 无 hostId str 参数解释: 请求的服务端ID,当status参数小于300时为空。 默认取值: 无 resource str 参数解释: 发生错误时相关的桶或对象,当status参数小于300时为空。 默认取值: 无 header list 参数解释: 响应消息头列表,由多个元组构成。每个元组均包含两个元素,代表响应头的键值对。 默认取值: 无 body object 参数解释: 操作成功后的结果数据,当status大于300时为空。该值根据调用接口的不同而不同,参见“桶相关接口”章节和“对象相关接口”章节的详细描述。 默认取值: 无
  • 请求参数说明 参数名称 参数类型 是否必选 描述 bucketName str 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 acl ACL 可选 参数解释: 桶ACL。 取值范围: acl取值详见权限ACL。 默认取值: 无 说明: acl与aclControl互斥。 aclControl str 可选 参数解释: 预定义ACL。 取值范围: 请参考HeadPermission。 默认取值: 无 说明: acl与aclControl互斥。 extensionHeaders dict 可选 参数解释: 接口的拓展头域。 取值范围: 参考自定义头域。 默认取值: 无
  • 功能说明 访问控制列表(Access Control List,ACL)用于资源拥有者给其他账号授予资源的访问权限。默认情况下,创建存储桶或对象时仅资源拥有者对资源的完全控制权限,即桶创建者对桶拥有完全控制权限,对象上传者对对象拥有完全控制权限,而其他账号默认无权访问资源。如果资源拥有者想授予其他账号资源的读写权限,可以使用ACL实现。OBS桶和对象的ACL是基于账号进行授权,授权后对账号和账号下的IAM用户都生效。 了解更多可参见ACL权限控制方式介绍。
  • 接口约束 单个桶最多支持100条ACL规则。 您必须是桶拥有者或拥有设置桶ACL的权限,才能设置桶ACL。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:PutBucketAcl权限,如果使用桶策略则需授予PutBucketAcl权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
  • 获取 DLI SDK 在“DLI SDK DOWNLOAD”页面,单击选择所需的SDK链接,即可获取对应的SDK安装包。 “dli-sdk-python-x.x.x.zip”压缩包,解压后目录结构如下: 表1 目录结构 名称 说明 dli python环境的DLI SDK基础模块。 examples python样例代码。 pyDLI pyHive的实现接口。 setup.py Python SDK安装脚本。
  • 取消批处理作业 DLI提供取消批处理作业的接口。您可以使用该接口取消批处理作业。若作业已经执行结束或失败则无法取消。示例代码如下: 1 2 3 4 5 6 7 def del_spark_batch(dli_client, batch_id): try: resp = dli_client.del_spark_batch_job(batch_id) print(resp.msg) except DliException as e: print(e) return
  • 提交批处理作业 DLI提供执行批处理作业的接口。您可以使用该接口执行批处理作业。示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 def submit_spark_batch_job(dli_client, batch_queue_name, batch_job_info): try: batch_job = dli_client.submit_spark_batch_job(batch_queue_name, batch_job_info) except DliException as e: print(e) return print(batch_job.job_id) while True: time.sleep(3) job_status = batch_job.get_job_status() print('Job status: {0}'.format(job_status)) if job_status == 'dead' or job_status == 'success': break logs = batch_job.get_driver_log(500) for log_line in logs: print(log_line)
  • 删除批处理作业 DLI提供删除批处理作业的接口。您可以使用该接口删除批处理作业。示例代码如下: def del_spark_batch(dli_client, batch_id): try: resp = dli_client.del_spark_batch_job(batch_id) print(resp.msg) except DliException as e: print(e) return
  • get_object_prefix 使用说明 请根据业务实际情况构造相应的每一行数据,此处仅作样例。 示例代码 1 2 3 4 5 6 7 def get_object_prefix(full_path): try: url = urlparse(full_path) return url.path.lstrip('/') except Exception as e: logger.error("Failed to get object key from full path", e) return None
  • get_bucket_name 使用说明 请根据业务实际情况构造相应的每一行数据,此处仅作样例。 示例代码 1 2 3 4 5 6 7 def get_bucket_name(full_path): try: url = urlparse(full_path) return url.hostname except Exception as e: logger.error("Failed to get bucket name from full path", e) return None
  • 打印作业结果 使用说明 请根据业务实际情况处理相应的每一行数据,此处仅作样例。 示例代码 1 2 3 4 5 6 7 8 9 def print_result(obs_reader): """ 请根据业务实际情况处理相应的每一行数据,此处仅作样例。 """ count = 0 for record in obs_reader: count += 1 print(record) logger.info("total records: %d", count)
  • to_json_string 使用说明 请根据业务实际情况构造相应的每一行数据,此处仅作样例。 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 def to_json_string(row, schema): json_obj = {} for i, column in enumerate(schema): if column.is_partition_column: continue if column.type == 'binary': json_obj[column.name] = base64.b64encode(row.columns[i]).decode('utf-8') elif column.type.startswith('decimal'): json_obj[column.name] = float(row.columns[i]) else: json_obj[column.name] = row.columns[i] return json.dumps(json_obj) + "\n"