华为云用户手册

  • Step5 模型推理 先在/home/ma-user/sdxl_ms下面创建outputs文件夹。 mkdir outputs 运行/home/ma-user/sdxl_ms路径下的run_txt2img_ms.py进行本地验证。 python run_txt2img_ms.py 最后会打印pipeline推理时间,并且在outputs文件夹下会生成图片。 图5 打印推理时间 图6 生成图片 也可通过在python run_txt2img_ms.py后加上相应参数进行测试,如 python run_txt2img_ms.py --height 512 --width 512 可选参数: --prompt "在这里写提示词,请用英文" --num_inference_stepsunet模型执行步数,默认50 --height图片高,默认为1024 --width图片宽,默认1024 --scheduler调度算法,默认为DDIM --seed随机种子,默认为42 安装依赖。 pip install flask 启动服务。 运行/home/ma-user/sdxl_ms路径下的infer_server.py部署推理服务。 python infer_server.py 服务启动成功显示如下。 图7 服务启动成功
  • Step6 使用Python脚本进行测试 使用python脚本进行测试,脚本内容如下。 # coding=utf-8 import requests import base64 import os from io import BytesIO from PIL import Image def base64_to_image(base64_str): image = base64.b64decode(base64_str, altchars=None, validate=False) image = BytesIO(image) image = Image.open(image) image.save(os.path.join("./outputs","output_img.png")) if __name__ == '__main__': # Config url, token and file path url = "http://localhost:8446" # Set body,then send request headers = { 'Content-Type':'application/json' } body = { "prompt": "a tiger sleep under the tree", "height": 512, "width": 512 } resp = requests.post(url, headers=headers, json=body) # Print result #print(resp.content) base64_to_image(resp.content) 将该脚本内容编辑成test.py文件并运行,服务端会打印推理时间,并在outputs文件夹下生成对应图片,打开图片查看效果。 python test.py
  • 获取软件和镜像 表2 获取软件和镜像 分类 名称 获取路径 插件代码包 ascendcloud-aigc-6.3.T041-*.tar.gz 文件名中的*表示具体的时间戳,以包名的实际时间为准。 Support网站 请联系您所在企业的华为方技术支持下载获取。 基础镜像Beta包 mindspore_2.3.0-cann_8.0.rc1-py_3.9-euler_2.10.7-aarch64-snt9b-20240422202644-39b975b.tar.partxx
  • Step1 准备环境 请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 购买DevServer资源时如果无可选资源规格,需要联系华为云技术支持申请开通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。 检查环境。 SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态 npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装NPU设备和驱动,或释放被挂载的NPU。 检查docker是否安装。 docker -v #检查docker是否安装 如尚未安装,运行以下命令安装docker。 yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。 sysctl -p | grep net.ipv4.ip_forward 如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。 sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward 获取基础镜像。建议使用官方提供的镜像部署推理服务,获取方式参见获取软件和镜像。 将获取到的基础镜像推到SWR上,再通过docker pull拉到容器中。 启动容器镜像。启动前请先按照参数说明修改${}中的参数。可以根据实际需要增加修改参数。 docker run -itd \ --device=/dev/davinci1 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /etc/ascend_install.info:/etc/ascend_install.info \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ --shm-size 32g \ --net=host \ -v ${work_dir}:${container_work_dir} \ --name ${container_name} \ ${image_name} bash 参数说明: -v ${work_dir}:${container_work_dir} 容器挂载宿主机目录,work_dir代表宿主机上的目录,container_work_dir代表挂载至容器中的工作目录,将解压后的代码放在宿主机工作目录下并挂载至容器内。由于此镜像的/home/ma-user为用户家目录,不要将容器内/home目录替换掉。 --name ${container_name} 容器名称,进入容器时会用到,此处可以自己定义一个容器名称。 --device=/dev/davinci1:1为卡号,具体使用哪张卡视情况而定,选择空闲卡号即可。卡是否空闲可在创建容器后进入容器执行npu-smi info命令查看。 进入容器。需要将${container_name}替换为实际的容器名称。 docker exec -it ${container_name} bash
  • Step3 下载原始模型 SDXL主要涉及5个模型,分别是text_encoder,text_encoder2,unet,unet2和vae_decoder。这里unet2表示refiner line下的unet模型。除了unet2,其他模型都可以从HuggingFace网站直接下载到onnx模型文件。 下载text_encoder,text_encoder2,unet和vae_decoder模型。下载地址:stable-diffusion-xl-base-1.0,下载如图2所示4个文件。 图2 下载SDXL模型 将下载的模型放到/home/ma-user/sdxl_ms/onnx的对应文件夹中,容器内外文件拷贝的命令参考如下。 docker cp model.onnx container_name:/home/ma-user/sdxl_ms/onnx/text_encoder/ 拷贝完模型文件后目录结构如下所示 /home/ma-user/sdxl_ms/onnx / |- || text_encoder |-- config.ini |-- config.json |-- model.onnx |- || text_encoder2 |-- config.ini |-- config.json |-- model.onnx |-- model.onnx_data |- || unet |-- config.ini |-- config.json |-- model.onnx |-- model.onnx_data |- || unet_2 |-- config.ini |-- config.json |- || vae_decoder |-- config.ini |-- config.json |-- model.onnx 下载unet2模型。这里unet2表示refiner line下的unet模型。下载地址:stable-diffusion-xl-refiner-1.0。这里需要把整个stable-diffusion-xl-refiner-1.0模型文件下载下来,可以在sdxl_ms下创建一个temp文件夹,将下载好的stable-diffusion-xl-refiner-1.0模型文件拷贝到temp文件夹中。 由于启动容器时默认用户为ma-user用户。如果需要切换到root用户可以执行以下命令: sudo su source /home/ma-user/.bashrc 如果继续使用ma-user,在使用其他属组如root用户上传的数据和文件时,可能会存在权限不足的问题,因此需要执行如下命令统一文件属主。 sudo chown -R ma-user:ma-group ${container_work_dir} # ${container_work_dir}:/home/ma-user/ws 容器内挂载的目录 例如: sudo chown -R ma-user:ma-group /home/ma-user/ws unet_2转换。unet2模型使用前需要先转换为onnx文件。 进入temp文件夹,将/home/ma-user/sdxl_ms/convert_xl_unet.py复制到文件夹中。 cd temp/ cp ../convert_xl_unet.py ./ 修改转换脚本convert_xl_unet.py第63行为如下内容并保存。 unet_path = "./unet.onnx" 安装依赖。 pip install transformers torch diffusers 执行转换脚本。 python convert_xl_unet.py 转换完成后在temp文件夹下有如下文件。 图3 转换后的unet2模型文件 将上图中的两个文件unet.onnx和weights.pb都复制到/home/ma-user/sdxl_ms/onnx/unet_2文件夹中,并修改unet.onnx为model.onnx,最终onnx文件夹的目录结构如下: /home/ma-user/sdxl_ms/onnx / |- || text_encoder |-- config.ini |-- config.json |-- model.onnx |- || text_encoder2 |-- config.ini |-- config.json |-- model.onnx |-- model.onnx_data |- || unet |-- config.ini |-- config.json |-- model.onnx |-- model.onnx_data |- || unet_2 |-- config.ini |-- config.json |-- model.onnx |-- weights.pb |- || vae_decoder |-- config.ini |-- config.json |-- model.onnx
  • Step2 安装模型插件代码包 将获取到的插件代码包ascendcloud-aigc-6.3.T041-*.tar.gz文件上传到容器的/home/ma-user/目录下并解压。获取路径参见获取软件和镜像。 cd /home/ma-user/ mkdir sdxl_ms cd sdxl_ms/ tar -zxvf ascendcloud-aigc-6.3.T041-*.tar.gz tar -zxvf ascendcloud-aigc-poc-sdxl_ms.tar.gz rm -rf ascendcloud-aigc-6.3.T041-* ascendcloud-aigc-6.3.T041-*.tar.gz后面的*表示时间戳,请按照实际替换。 /home/ma-user/sdxl_ms路径下的文件如下图所示。 图1 插件代码包文件
  • Step4 模型转换 在进行模型转换前,需先设置环境变量。 cd /home/ma-user/sdxl_ms export LITE_HOME=/usr/local/mindspore-lite/mindspore-lite-2.3.0rc1-linux-aarch64 export LD_LIBRARY_PATH=$LITE_HOME/runtime/lib:$LITE_HOME/runtime/third_party/dnnl:$LITE_HOME/tools/converter/lib:$LD_LIBRARY_PATH export PATH=$LITE_HOME/tools/converter/converter:$LITE_HOME/tools/benchmark:$PATH 修改模型转换脚本。 模型转换的脚本是/home/ma-user/sdxl_ms/run_onnx_to_mindir.sh,脚本内容如下,请根据实际情况修改。 图4 修改模型转换脚本 这里提供的模型适配包支持5种分档位图片大小,分别是512x512 768x768 960x960 1024x1024 1280x1280 执行如下命令转换模型。 sh run_onnx_to_mindir.sh 出现CONVERT RESULT SUC CES S:0即为转模型成功,这里会自动依次转换5个模型。转换时间较长(大约35min),请耐心等待。
  • Step4 模型转换 执行如下命令进行模型转换。如下脚本执行完后,会将4个模型都转换完成。 cd /home/ma-user/sdv1-5_ms_code source /usr/local/Ascend/ascend-toolkit/set_env.sh bash run_1_onnx_to_mindspore.sh 出现CONVERT RESULT SUCCESS:0即为转模型成功。 图2 转换成功 此处模型中默认图片大小为512*512,如果需要其他尺寸的图片大小,需要修改run_1_onnx_to_mindspore.sh后重新转换模型,具体请参见附录:模型转换样例参考。
  • 附录:模型转换样例参考 cd ***/onnx/unet source /usr/local/Ascend/ascend-toolkit/set_env.sh && converter_lite --modelFile=./model.onnx --outputFile=./unet_test --fmk=ONNX --saveType=MINDIR --optimize=ascend_oriented --inputShape="sample:2,4,64,64;timestep:1;encoder_hidden_states:2,77,768" onnx模型本身是动态的,这里以图片尺寸为512*512时,unet的输入shape为例。 更多模型转换的详细信息可以参考MindSpore Lite的官方文档:https://www.mindspore.cn/lite/docs/zh-CN/r2.3.0rc1/use/cloud_infer/converter_tool.html
  • Step3 下载原始模型包 从HuggingFace官网下载SD1.5模型包到本地,下载地址:https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/onnx。 下载如下图所示4个目录的模型,并将其放在插件的对应目录中。 图1 下载SDXL模型包并解压 模型包目录结构如下,将下载后的模型按照如下目录上传到对应文件夹中。 /home/ma-user/sdv1-5_ms_code/onnx/ #插件包解压后的目录 |- || safety_checker #目录safety_checker需要手动创建 |-- model.onnx 模型 |- || text_encoder #目录text_encoder需要手动创建 |-- model.onnx 模型 |- || unet |-- config.ini 配置文件 |-- model.onnx 模型 |-- weights.pb 模型 |- || vae_decoder |-- config.ini 配置文件 |-- model.onnx 模型 |- - ****** unet和vae_decoder目录不需要创建,text_encoder和safety_checker目录需要手动创建,命令如下。 cd /home/ma-user/sdv1-5_ms_code/onnx mkdir text_encoder safety_checker
  • Step5 启动推理 修改run_3_txt2img_ms.py相关配置。 35行astronaut_512x512.png为生成图片的名字,可修改。 图3 修改35行生成图片的名字 91行为占用卡号,可修改。 93-96行为模型路径,可修改。 图4 修改占用卡号和模型路径 执行如下命令进行模型推理。 cd /home/ma-user/sdv1-5_ms_code pip install pytorch_lightning diffusers==0.21.0 transformers mkdir outputs python run_3_txt2img_ms.py 也可通过在python run_txt2img_ms.py后加上相应参数进行测试,可选参数: --prompt:"在这里写提示词,请用英文" --num_inference_steps:unet模型执行步数,默认20 --height:图片高,默认为512 --width:图片宽,默认512 推理结束后,可以在outputs目录看到结果图片文件。 图5 结果图片文件
  • 获取软件和镜像 表2 获取软件和镜像 分类 名称 获取路径 插件代码包 ascendcloud-aigc-6.3.T041-*.tar.gz 文件名中的*表示具体的时间戳,以包名的实际时间为准。 Support网站 如果没有软件下载权限,请联系您所在企业的华为方技术支持下载获取。 基础镜像Beta包 mindspore_2.3.0-cann_8.0.rc1-py_3.9-euler_2.10.7-aarch64-snt9b-20240422202644-39b975b.tar.partxx
  • Step1 准备环境 请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 购买DevServer资源时如果无可选资源规格,需要联系华为云技术支持申请开通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。 检查环境。 SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态 npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装NPU设备和驱动,或释放被挂载的NPU。 检查docker是否安装。 docker -v #检查docker是否安装 如尚未安装,运行以下命令安装docker。 yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。 sysctl -p | grep net.ipv4.ip_forward 如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。 sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward 获取基础镜像。建议使用官方提供的镜像部署推理服务。获取方式参见获取软件和镜像。 将获取到的基础镜像推到SWR上,再通过docker pull拉到容器中。 启动容器镜像。启动前请先按照参数说明修改${}中的参数。可以根据实际需要增加修改参数。 export work_dir="自定义挂载的工作目录" export container_work_dir="自定义挂载到容器内的工作目录" export container_name="自定义容器名称" export image_name="镜像名称或ID" // 启动一个容器去运行镜像 docker run -itd --net=host \ --device=/dev/davinci7 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ --shm-size=32g \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /var/log/npu/:/usr/slog \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v ${work_dir}:${container_work_dir} \ --name ${container_name} \ ${image_name} \ /bin/bash 参数说明: -v ${work_dir}:${container_work_dir} 容器挂载宿主机目录,work_dir代表宿主机上的工作目录,container_work_dir代表挂载至容器中的工作目录,将解压后的代码放在宿主机工作目录下并挂载至容器内。 --name ${container_name} 容器名称,进入容器时会用到,此处可以自己定义一个容器名称。 image_name: 容器镜像的名称 --device=/dev/davinci7:7为卡号,具体使用哪张卡视情况而定,选择空闲卡号即可。卡是否空闲可在创建容器后进入容器执行npu-smi info命令查看。如果只希望映射单卡,加上--device=/dev/davinci+卡号编码即可,如--device=/dev/davinci0,本业务单卡即可运行。 进入容器。需要将${container_name}替换为实际的容器名称。 docker exec -it ${container_name} bash
  • Step2 安装插件代码包 将获取到的SD1.5模型插件代码包ascendcloud-aigc-6.3.T041-*.tar.gz文件上传到容器的/home/ma-user/目录下并解压。获取路径参见获取软件和镜像。 cd /home/ma-user/ tar -zxvf ascendcloud-aigc-6.3.T041-*.tar.gz #解压 tar -zxvf ascendcloud-aigc-poc-stable-diffusion-v1-5mindspore_lite.tar.gz rm -rf ascendcloud-aigc-6.3.T041-*
  • 导入快捷调试 CodeArts API支持Postman的Collection数据文件的导入,也支持Collections和Environments数据集ZIP包的全量导入,方便用户迁移调试数据。 进入“快捷调试”页面,单击,选择“导入Postman文件”。 弹出“导入Postman文件”对话框,选择需要导入的Postman文件。 Collection数据文件的导入 弹出“导入”对话框,选择需要导入的接口,单击“导入”完成数据迁移。 Collections和Environments数据集ZIP包的导入 弹出“导入”对话框,选择需要导入的接口和环境变量,单击“导入”完成数据迁移。 导入通过Postman导出的文件时,接口示例会被同时导入为快捷调试接口,名称和Postman中接口示例名称相同。 父主题: 导入与导出
  • 邀请其他企业用户 可以通过邀请其他企业用户,对当前项目进行查看或编辑。 单击“添加成员”旁的下拉框,选择“邀请其他企业用户”。 弹出“邀请其他企业用户”对话框,在“企业用户”输入框中输入企业用户ID,在“用户名称”输入框中输入需要邀请的用户名称后,单击右侧“添加用户”,可一次性添加同一企业不同用户。 单击“确定”导入其他企业成员,默认为“浏览者”身份权限。可通过设置项目成员角色修改成员角色与权限。
  • YApi项目导入 导出数据 打开YApi对应项目,单击“数据管理”,进入“数据管理”页面。 在导出数据模块中,选择“json”数据方式,单击导出,完成导出。 导入数据 打开CodeArts API首页,单击“导入项目”。 弹出“导入项目”对话框,选择导入文件格式为“YApi”,选择需要导入的YApi文件。 在“导入项目”对话框输入项目名称,单击“确定”。 弹出“导入预览”对话框,可预览所有导入数据,然后单击“导入”。 弹出导入进度对话框,可查看导入进度。 导入完成后,可进入导入项目,查看导入的接口。 当导入请求体和响应体结构为Json格式时,支持JsonSchema和Json标准(双斜杠类型字段注释将被识别为字段描述)格式导入。
  • 全局代理设置 使用系统代理 进入网络代理设置页面后,默认使用系统代理。 可根据需要选择是否优先使用系统环境变量HTTP_PROXY、HTTPS_PROXY、NO_PROXY,勾选后,CodeArts API会优先调用系统环境变量。 身份认证:请查看身份认证。 不使用代理 选择不使用代理时,此时CodeArts API不使用任何代理(包含系统代理)连接服务器。 自定义 选择自定义代理时,需配置“接口类型”、“代理服务器”、“身份认证”、“Proxy Bypass”。 接口类型:接口类型默认HTTP和HTTPS全选,支持两种协议类型的代理。 代理服务器:需输入代理服务器地址和端口。 身份认证:请查看身份认证。 Proxy Bypass:无需进行代理转发的IP或 域名 ,可填入多个,以英文逗号进行分隔。
  • 功能描述 规格丰富 支持标准型、性能型等,满足不同应用场景性能诉求。 弹性扩展 容量按需扩容,性能线性增长。 安全可靠 三副本冗余:存储数据持久度高达99.9999999%。 数据加密 :存储池支持数据加密,保护数据安全。 VPC隔离:安全可靠,租户间100%隔离。 物理独享:存储池物理隔离,资源独享。 备份恢复 专属文件存储服务支持CBR备份,基于备份可以恢复文件存储系统。 监控文件系统 对接 云监控 ,支持带宽、IOPS、容量等多种监控指标。 审计文件系统 支持通过 云审计 服务对资源的操作进行记录,以便用户可以查询、审计和回溯。
  • 性能规格 表1 性能规格 实例名称 依赖底层资源 性能规格 SFS Turbo标准型专属 DCC:C7/C7n/C6/C6s/C3实例 DSS:高IO资源池 带宽=min{1GB/s,DSS存储池可用带宽} IOPS=min{15k, DSS存储池可用IOPS} SFS Turbo性能型专属 DCC:C7/C7n/C6/C6s/C3实例 DSS:超高IO资源池 带宽=min{2GB/s,DSS存储池可用带宽} IOPS=min{20k,DSS存储池可用IOPS} 存储池可用带宽和IOPS,与存储容量成正比例关系。在购买专属弹性文件服务,规划DSS专属存储资源时,需要为专属弹性文件服务预留对应的容量和性能,避免出现容量或性能不足,影响专属文件存储服务。 在“性能规格”中,带宽值和IOPS值为“{}”中的最小值。
  • 如何选择区域? 选择区域时,您需要考虑以下几个因素: 地理位置 一般情况下,建议就近选择靠近您或者您的目标用户的区域,这样可以减少网络时延,提高访问速度。 在除中国大陆以外的亚太地区有业务的用户,可以选择“中国-香港”、“亚太-曼谷”或“亚太-新加坡”区域。 在非洲地区有业务的用户,可以选择“非洲-约翰内斯堡”区域。 在拉丁美洲地区有业务的用户,可以选择“拉美-圣地亚哥”区域。 “拉美-圣地亚哥”区域位于智利。 资源的价格 不同区域的资源价格可能有差异,请参见华为云服务价格详情。
  • 什么是区域、可用区? 区域和可用区用来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
  • 哪些用户有权限使用文件系统加密 安全管理员(拥有“Security Administrator”权限)可以直接授权SFS容量型文件系统访问KMS,使用加密功能。 普通用户(没有“Security Administrator”权限)使用加密功能时,需要联系系统管理员获取安全管理员权限。 同一个区域内只要安全管理员成功授权SFS容量型文件系统访问KMS,则该区域内的普通用户都可以直接使用加密功能。 如果当前区域内存在多个项目,则每个项目下都需要安全管理员执行授权操作。
  • 文件系统加密的密钥 SFS容量型文件系统加密使用KMS提供的密钥,包括默认密钥和自定义密钥: 默认密钥: 系统会为您创建默认密钥,名称为“sfs/default”。 默认密钥不支持禁用、计划删除等操作。 自定义密钥: 即您已有的密钥或者新创建密钥,具体请参见《数据加密服务用户指南》的“创建密钥”章节。 如果加密文件系统使用的自定义密钥被执行禁用或计划删除操作,当操作生效后,使用该自定义密钥加密的文件系统仅可以在一段时间内(默认为30s)正常使用。请谨慎操作。 SFS Turbo文件系统无默认密钥,可以使用您已有的密钥或者创建新的密钥,请参见《数据加密服务用户指南》的“创建密钥”章节。
  • 查询所有数据库 DLI 提供查询数据库列表接口。您可以使用该接口查询当前已创建的数据库列表。示例代码如下: 1 2 3 4 5 6 7 8 9 def list_all_dbs(dli_client): try: dbs = dli_client.list_databases() except DliException as e: print(e) return for db in dbs: print(db) 完整样例代码和依赖包说明请参考:Python SDK概述。
  • 创建数据库 DLI提供创建数据库的接口。您可以使用该接口创建数据库,示例代码如下: 1 2 3 4 5 6 7 8 def create_db(dli_client): try: db = dli_client.create_database('db_for_test') except DliException as e: print(e) return print(db) “default”为内置数据库,不能创建名为“default”的数据库。 完整样例代码和依赖包说明请参考:Python SDK概述。
  • 删除数据库 DLI提供删除数据库的接口。您可以使用该接口删除数据库。示例代码如下: 1 2 3 4 5 6 def delete_db(dli_client, db_name): try: dli_client.delete_database(db_name) except DliException as e: print(e) return 含表的数据库不能直接删除,请先删除数据库的表再删除数据库。 数据库删除后,将不可恢复,请谨慎操作。 完整样例代码和依赖包说明请参考:Python SDK概述。
  • 导入数据 DLI提供导入数据的接口。您可以使用该接口将存储在OBS中的数据导入到已创建的DLI表中。示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 def import_data(dli_client, db_name, tbl_name, queue_name): options = { "with_column_header": True, "delimiter": ",", "quote_char": "\"", "escape_char": "\\", "date_format": "yyyy/MM/dd", "timestamp_format": "yyyy/MM/dd hh:mm:ss" } try: job_id, status = \ dli_client.import_table(tbl_name, db_name, 'obs://bucket/obj/data.csv', 'csv', queue_name=queue_name, options=options) except DliException as e: print(e) return print(job_id) print(status) 在提交导入作业前,可选择通过data_type参数设置导入数据的类型,例如将data_type设置为csv。csv数据的具体格式通可过options参数设置,例如:csv的分隔符,转义符等。 当OBS桶目录下有文件夹和文件同名时,加载数据会优先指向该路径下的文件而非文件夹。建议创建OBS对象时,在同一级中不要出现同名的文件和文件夹。
  • 导出数据 DLI提供导出数据的接口。您可以使用该接口将DLI表中的数据导出到OBS中。示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 def export_data(dli_client, db_name, tbl_name, queue_name): try: job_id, status = dli_client.export_table(tbl_name, db_name, 'obs://bucket/obj', queue_name=queue_name) except DliException as e: print(e) return print(job_id) print(status) 在提交导出作业前,可选设置数据格式、压缩类型、导出模式等,导出格式只支持csv格式。 当OBS桶目录下有文件夹和文件同名时,加载数据会优先指向该路径下的文件而非文件夹。建议创建OBS对象时,在同一级中不要出现同名的文件和文件夹。
  • 查询所有作业 DLI提供查询所有作业的接口。您可以使用该接口执行查询当前工程下的所有作业的信息并获取查询结果。示例代码如下: 1 2 3 4 5 6 7 8 def list_all_sql_jobs(dli_client): try: sql_jobs = dli_client.list_sql_jobs() except DliException as e: print(e) return for sql_job in sql_jobs: print(sql_job) 该SDK接口不支持sql_pattern,即通过指定sql片段作为作业过滤条件进行查询。 如果需要则可以通过查询所有作业API接口指定该参数进行查询。
共100000条