繁体   English   中英

如何使用 JDBC 和 ZEA52C36203D5F99C3CE2ZB4 从 Python 连接远程 Hive 服务器?

[英]How to connect a remote Hive server from Python using JDBC and SSL?

我有以下 Hive 客户端详细信息,需要 SSL 连接才能访问数据库

client_url="jdbc:hive2://myhiveserver.india.mycompany.com:9029/default;ssl=true;transportMode=http;httpPath=gateway/default/hive;trustStorePassword=selfsign"
certificate=mycertficate.pem

那么在 ZA7F5F352316B927841736 中使用 JDBC 和 SSL 访问 Hive 的正确方法是什么? 在我的情况下,我没有看到在附加 SSL 证书的情况下访问 Hive 的正确示例?

使用 jaydebeapi 和 jpype 对我有用。 以下文件需要添加到 jvm

  1. krb5.config 文件 - 您的管理员将能够提供此文件
  2. keytab 文件 - 用于尝试访问 hive 的用户
  3. jaas 文件 - (下面提到的示例)

代码:


    jaas = './config/jass.conf'
    krb5 = './config/krb5.conf'
    keytab = './config/<userid>.keytab'
    jar = './jars/HiveJDBC41.jar'
    principal = "<host>@<domain>"
    jdbc_url = "jdbc:hive2://<host>:<port>/default;KrbRealm=<domain>;AuthMech=1;KrbHostFQDN=<host>;KrbServiceName=hive;principal=<host>@<domain>;ssl=1;"

    jvm_path = jpype.getDefaultJVMPath()
    jpype.startJVM(jvm_path, 
    '-Djava.class.path='+ jar,
    '-Djavax.security.auth.useSubjectCredsOnly=true',
    '-Djava.security.krb5.conf='+krb5,
    '-Djava.security.auth.login.config='+jaas,
    '-Djava.security.auth.login.config.keyTabFile='+keytab,
    '-Djava.security.auth.login.config.principal='+ principal,
    '-Dhadoop.security.authentication="kerberos"', 
    )
    conn = jaydebeapi.connect("com.cloudera.hive.jdbc41.HS2Driver", jdbc_url)

jaas 文件:

    Client {
    com.sun.security.auth.module.Krb5LoginModule required
    useTicketCache=true
    doNotPrompt=true
    useKeyTab=true
    principal="<host>@<domain>"   
    debug=true
    keyTab="./config/<userid>.keytab";
    };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM