下载并安装JDBC驱动包
操作场景
JDBC用于连接DLI服务,您可以在Maven获取JDBC安装包,或在DLI管理控制台下载JDBC驱动文件。
本文介绍通过JDBC连接DLI并提交SQL作业。
获取服务端连接地址
连接DLI服务的地址格式为:jdbc:dli://<endPoint>/<projectId>。因此您需要获取对应的Endpoint和项目编号。
在地区和终端节点获取DLI对应的Endpoint;在华为云页面上方菜单栏,单击用户名,然后在“我的凭证”页面获取项目编号。
示例:jdbc:dli://dli.cn-north-1.myhuaweicloud.com/96a17d961b84434baec6a58b9e567908。
下载并安装JDBC驱动
- 方式一:使用Maven中央库来添加JDBC驱动
Maven中央库是Apache Maven项目的一部分,提供了Java库和框架。
在不指定JDBC获取方式的情况下,默认使用Maven中央库的方式来添加JDBC驱动。
使用maven构加入huaweicloud-dli-jdbc依赖的maven配置项为(此为默认操作无需单独配置。)1 2 3 4 5
<dependency> <groupId>com.huawei.dli</groupId> <artifactId>huaweicloud-dli-jdbc</artifactId> <version>x.x.x</version> </dependency>
- 方式二:通过Maven配置华为镜像源来获取JDBC驱动
在使用Maven管理项目依赖时,可以通过修改settings.xml文件来配置华为镜像源以获取JDBC驱动。
<mirror> <id>huaweicloud</id> <mirrorOf>*</mirrorOf> <url>https://mirrors.huaweicloud.com/repository/maven/</url> </mirror>
- 方式三:在DLI管理控制台下载JDBC驱动文件
- 登录DLI管理控制台。
- 单击总览页右侧“常用链接”中的“SDK下载”。
- 在“DLI SDK DOWNLOAD”页面,选择相应驱动下载。
单击“huaweicloud-dli-jdbc-x.x.x”即可下载对应版本的JDBC驱动包。
JDBC驱动包命名为“huaweicloud-dli-jdbc-<version>.zip”,支持在所有平台(Linux、Windows等)所有版本中使用,且依赖JDK 1.7及以上版本。
- 下载的JDBC驱动包中包含了.bat(Windows)或.sh(Linux/Mac)脚本,这些脚本用于自动化安装JDBC驱动到本地Maven仓库。
认证鉴权
使用JDBC建立DLI驱动连接时,需要对用户进行认证鉴权。
- (推荐)生成AK/SK
- 登录DLI管理控制台。
- 在页面右上角的用户名的下拉列表中选择“我的凭证”。
- 在“我的凭证”页面,默认显示“项目列表”,切换到“管理访问密钥”页面。
- 单击左侧“新增访问密钥”按钮,输入“登录密码”和“短息验证码”。
- 单击“确定”,下载证书。
- 下载成功后,在credentials文件中即可获取AK和SK信息。
认证用的AK和SK硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放, 使用时解密, 确保安全。
- 获取Token
当您使用Token认证方式完成认证鉴权时,需要获取用户Token并在JDBC连接参数中配置Token信息,获取Token的详细步骤如下。
- 发送POST https://<IAM_Endpoint>/v3/auth/tokens,请参见地区和终端节点,获取命令中IAM的Endpoint及消息体中的区域名称。
请求内容示例如下。
下面示例代码中的斜体字需要替换为实际内容,详情请参考《统一身份认证服务API参考》。
{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "password", "domain": { "name": "domainname" } } } }, "scope": { "project": { "id": "0aa253a31a2f4cfda30eaa073fee6477" //假设project_id是“0aa253a31a2f4cfda30eaa073fee6477” } } } }
- 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。
- 发送POST https://<IAM_Endpoint>/v3/auth/tokens,请参见地区和终端节点,获取命令中IAM的Endpoint及消息体中的区域名称。