▌前言

python中用于连接HiveServer2的客户端有3个:pyhs2,pyhive,impyla。官网的示例采用的是pyhs2,但pyhs2的官网已声明不再提供支持,建议使用impyla和pyhive。我选择的python2.7和impala,运行环境Linux、Windows。

▌安装依赖(默认已安装好python2.7、pip)

pip install sasl

pip install thrift

pip install thrift-sasl

pip install impyla

安装sasl可能会报错,执行以下命令:

解决centos下缺少sasl.h的问题

yum install cyrus-sasl-lib.x86_64

yum install cyrus-sasl-devel.x86_64

yum install libgsasl-devel.x86_64

yum install saslwrapper-devel.x86_64

一般拉说前面三句基本能解决问题,第四句留着实在没办法时用。

解决centos下缺少sasl.h的问题

这里需要自己下载此文件,并清楚自己的python环境是32还是64.cd到此文件的路径下,然后执行如下命令:

pip install sasl-0.2.1-cp27-cp27m-win32.whl或pip install sasl-0.2.1-cp27-cp27m-win_amd64.whl

可在cmd执行以下命令获取python环境的位数:

1)、python

2)、import platform

3)、platform.architecture()

到这里若无kerberos认证的hive可正常使用,但我们的测试环境带有认证,所以执行python脚本会报如下错:

thrift.transport.TTransport.TTransportException: Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: Unable to find a callback: 2

问题出现的原因是:执行python脚本的机器无目标hive的kerberos认证信息。此问题暂未解决,而是Windows通过paramiko调用Linux服务器上连接hive的脚本,实现Windows操作hive。

▌python代码示例(linux)

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# hive util with hive server2

from impala.dbapi import connect

class HiveClient:

def __init__(self, db_host, port, authMechanism, user, password, database, kbservice):

self.conn = connect(host=db_host,

port=port,

auth_mechanism=authMechanism,

user=user,

password=password,

database=database,

kerberos_service_name=kbservice

)

def query(self, sql):

with self.conn.cursor() as cursor:

cursor.execute(sql)

return cursor.fetchall()

def close(self):

self.conn.close()

if __name__ == '__main__':

hive_client = HiveClient(db_host='IP', port=10000, authMechanism='GSSAPI', user='test1', password='123456',

database='database', kbservice='srv')

sql = "select * from account_province_annual limit 5"

result = hive_client.query(sql)

hive_client.close()

print result

▌结果

hive执行后的结果:

▌Windows

Windows直接操作服务器上的具有kerberos认证的hive,暂未解决。现阶段通过paramiko执行Linux服务器的hive操作脚本,见下一篇https://blog.csdn.net/dlijuan/article/details/81204311。(因为需要使用RF写自动化,在Windows调试较方便。)

经过其他同事的努力,发现能通过MIT kerberos 认证用户,但出现了如下的错误,暂未解决,待时间充裕再来。希望已解决此问题的朋友能够告知,不胜感激。

MIT kerberos认证成功:

kinit命令报错如下:

python 权限认证 impala_python操作具有kerberos认证的hive(impala)相关推荐

  1. Kafka 认证三:添加 Kerberos 认证详细流程

    背景 上一章节介绍了 Kerberos 服务端和客户端的部署过程,本章节继续介绍 Kafka 添加 Kerberos 认证的部署流程,及 Java API 操作的注意事项. sasl.kerberos ...

  2. python调用hive与java调用区别_python3.6.5基于kerberos认证的hive和hdfs连接调用方式

    1. Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证.具体请查阅官网 2. 需要安装的包(基于centos) yum install libsasl2 ...

  3. 通过java api操作hdfs(kerberos认证)

    参考代码如下 import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs ...

  4. python子进程进行kinit认证_使用kafka-python客户端进行kafka kerberos认证

    之前说过python confluent kafka客户端做kerberos认证的过程,如果使用kafka python客户端的话同样也可以进行kerberos的认证,具体的认证机制这里不再描述,主要 ...

  5. python权限管理系统_Django 自定义权限管理系统详解(通过中间件认证)

    1. 创建工程文件, 修改setting.py文件 django-admin.py startproject project_name 特别是在 windows 上,如果报错,尝试用 django-a ...

  6. Windows 环境 python读需kerberos认证的hdfs

    Windows 环境 python读需kerberos认证的hdfs 不喜欢废话,直接先上结论: Windows环境下python读kerberos认证的hdfs不支持,即使用anaconda中的也不 ...

  7. Spark操作Hive(开启Kerberos认证)代码提交华为云DAYU的MRS Spark组件--方法流程及注意事项

    背景: 最近在测试华为云DAYU MRS Spark操作Hive的流程,因kerberos认证的问题一直测试失败. 代码示例: val sparkSession = SparkSession.buil ...

  8. Hadoop Kerberos 认证下 Sentry 安装 + Sentry 权限设置使用

    目录 一.安装Sentry 1.MariaDB中创建sentry数据库 2.CDH中添加sentry 服务 3.hive配置 启动Sentry 4.Impala配置 启动Sentry 5.Hue配置 ...

  9. CDH 的Kerberos认证配置

    2019独角兽企业重金招聘Python工程师标准>>> 最近因为项目需要,需要对用户权限做限制,最终选择了kerberos+sentry+hue模式来管理用户,但是这个kerbero ...

最新文章

  1. 【转载】Deep learning:十九(RBM简单理解)
  2. 机器学习-数据科学库(第四天)
  3. 机器学习基础——RandomForest
  4. 英文名字的取法 分享
  5. idea 新建ssm java ee_IDEA搭建SSM项目实现增删改查
  6. python多标签分类_如何通过sklearn实现多标签分类?
  7. 春节!免费送出一个佳能相机!
  8. laravel配置加解密
  9. 磁盘分区需要知道的概念
  10. jquery广告轮播插件
  11. 替代密码的c语言程序,替代密码及置换密码的C语言实现.doc
  12. linux 清tcp缓存 命令_漫画 | 一台Linux服务器最多能支撑多少个TCP连接?
  13. 程序设计题大病:劝你不要买未来教育的Python二级书
  14. vmd参数优化 matlab,遗传算法优化VMD参数
  15. 《计算机工程》投稿过程
  16. Pycharm问题:this applicatation failed to start because it could not find or laod the qt plaform plugin
  17. 欧拉函数,欧拉公式,降幂公式
  18. oracle 查询本年12月,Oracle查询1-12月数据
  19. Riverbed SteelConnect荣获2017 Interop东京展“最佳展示奖”
  20. codeforces1375G Tree Modification

热门文章

  1. 基于“机器学习”的智能聊天机器人---python实现(1)
  2. 为什么要学习数据结构?
  3. 使用微软云服务器搭建Hadoop集群
  4. 第六章 市场结构和企业--完全竞争
  5. k8s核心资源之service四层负载均衡器代理(六)
  6. python中的date的含义_浅谈python中的dateime
  7. OpenGL(十四)——Qt OpenGL纹理
  8. kafka-eagle数据库脚本,表结构和数据
  9. Tensorflow2.0之用遗传算法优化卷积神经网络结构 Version2
  10. Android10+无法获取IMEI、IOS10+关闭广告跟踪IDFA解决方法