-
返回结果 表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"