更新时间:2024-08-03 GMT+08:00

通过HSBroker的用户名密码认证实现查询HetuEngine SQL任务

本章节适用于MRS 3.3.0及以后版本。

通过HSBroker连接方式实现,使用用户名和密码连接到HetuEngine,组装对应的SQL发送到HetuEngine执行。

import jaydebeapi
 
driver = "io.XXX.jdbc.XXXDriver"
 
# need to change the value based on the cluster information
url = "jdbc:XXX://192.168.43.223:29860,192.168.43.244:29860/hive/default?serviceDiscoveryMode=hsbroker"
user = "YourUserName"
# 认证用的密码写入代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
# 本示例以密码保存在环境变量中来实现身份验证为例,运行本示例前,请先在本地环境中设置环境变量HETUENGINE_PASSWORD
password = os.getenv('HETUENGINE_PASSWORD')
tenant = "YourTenant"
jdbc_location = "Your file path of the jdbc jar"
 
sql = "show tables"
 
if __name__ == '__main__':
    conn = jaydebeapi.connect(driver, url, {"user": user,
                                            "password": password,
                                            "tenant": tenant},
                              [jdbc_location])
    curs = conn.cursor()
    curs.execute(sql)
    result = curs.fetchall()
    print(result)
    curs.close()
conn.close()

上述代码中各参数说明如下表所示:

表1 参数及参数说明

参数名称

参数说明

url

jdbc:XXX://HSBroker1_IP:HSBroker1_Port,HSBroker2_IP:HSBroker2_Port,HSBroker3_IP:HSBroker3_Port/catalog/schema?serviceDiscoveryMode=hsbroker

说明:
  • XXX:驱动名,请以实际样例代码中的内容为准。
  • catalogschema分别是JDBC客户端要连接的catalog和schema名称。
  • HSBroker_IP:HSBroker_Port是HSBroker的URL,多个URL以逗号隔开。例如:“192.168.81.37:2181,192.168.195.232:2181,192.168.169.84:2181”

    在Manager页面,选择“集群 > 服务 > HetuEngine > 实例”,获取HSBroker所有实例的业务IP;在“配置”页签,搜索“server.port”,获取HSBroker端口号。

user

访问HetuEngine的用户名,即在集群中创建的“人机”用户的用户名。

password

在集群中创建的“人机”用户的用户密码。

tenant

指定访问HetuEngine计算实例的租户资源队列。

jdbc_location

导入并配置HetuEngine Python3样例工程中获取的hetu-jdbc-XXX.jar包的完整路径。

  • Windows系统路径示例:"D:\\hetu-examples-python3\\hetu-jdbc-XXX.jar"
  • Linux系统路径示例:"/opt/hetu-examples-python3/hetu-jdbc-XXX.jar"