python 连接 inceptor 的几种方式

  其他常见问题
内容纲要

概要描述


本文介绍如何使用 python 的 pyhive 模块,连接几种不同认证方式的 inceptor

详细说明


主要包括以下几种:

  1. 未开启任何认证方式的 inceptor
  2. 只开启 LDAP 认证方式的 inceptor
  3. 开启 Kerberos 认证方式的 inceptor

环境准备工作

python 版本 >= 3.5

yum install gcc
yum install gcc-c++
yum install python-devel
yum install cyrus-sasl-devel
yum install cyrus-sasl-plain  cyrus-sasl-devel  cyrus-sasl-gssapi

pip install pyhive==0.6.2
pip install sasl==0.2.1
pip install thrift_sasl==0.4.2

1、未开启任何认证方式的 inceptor

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from pyhive import hive
# 定义连接串,连接未开启安全的,只需要传递两个参数即可
# :param host: What host HiveServer2 runs on
# :param port: What port HiveServer2 runs on. Defaults to 10000.
inceptor = hive.connect(host='172.22.22.24',port=10000)
cursor = inceptor.cursor()

2、只开启 LDAP 认证方式的 inceptor

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from pyhive import hive
# 定义连接串,开启LDAP 情况下,需要传递以下参数
# :param auth: The value of hive.server2.authentication used by HiveServer2.Defaults to `NONE`.
# :param username: username or getpass.getuser()
# :param password: Use with auth='LDAP' or auth='CUSTOM' only
inc_with_ldap = hive.connect(host='172.22.22.24',port=10000,auth='LDAP', username='hive',password='123456')
cursor = inc_with_ldap.cursor()

3、同时开启 LDAP、Kerberos 认证方式的 inceptor

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from pyhive import hive
import os
# 创建连接之前,保证环境已经认证了,或者直接在 python 脚本里面认证之后再执行。kerberos 模式下使用的是当前环境下的认证信息;
os.system('kinit -kt /opt/tools/admin.keytab admin/TDH@TDH')
# 创建的连接是当前环境下有效的用户认证信息,也就是 klist 出来的
inc_with_kerberos = hive.connect(host='172.22.22.24',port=10000,auth='KERBEROS',kerberos_service_name="hive")
cursor = inc_with_kerberos.cursor()
cursor.execute("select * from eastmoney.guild_rank limit 110", async=True) 
cursor.fetchall()

FAQ:

测试连接过程报错,需要安装一些依赖包

thrift.transport.TTransport.TTransportException: Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found

yum install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。