python - 使用 python 和 Kerberos 连接到 Hive
问题描述
我正在尝试使用 Python 连接到配置单元。我安装了所有需要的依赖项(sasl、thrift_sasl 等)
这是我尝试连接的方式:
configuration = {"hive.server2.authentication.kerberos.principal" : "hive/_HOST@REALM_HOST", "hive.server2.authentication.kerberos.keytab" : "/etc/security/keytabs/hive.service.keytab"}
connection = hive.Connection(configuration = configuration, host="host", port=port, auth="KERBEROS", kerberos_service_name = "hiveserver2")
但我得到这个错误:
次要代码可能会提供更多信息(找不到领域“REALM_DOMAIN”的 KDC)
为什么我不见了?有人有使用pyHive
连接的示例kerberos
吗?
谢谢您的帮助。
解决方案
谢谢@Kishore。实际上在 PySpark 中,代码如下所示:
import pyspark
from pyspark import SparkContext
from pyspark.sql import Row
from pyspark import SparkConf
from pyspark.sql import HiveContext
from pyspark.sql import functions as F
import pyspark.sql.types as T
def connection(self):
conf = pyspark.SparkConf()
conf.setMaster('yarn-client')
sc = pyspark.SparkContext(conf=conf)
self.cursor = HiveContext(sc)
self.cursor.setConf("hive.exec.dynamic.partition", "true")
self.cursor.setConf("hive.exec.dynamic.partition.mode", "nonstrict")
self.cursor.setConf("hive.warehouse.subdir.inherit.perms", "true")
self.cursor.setConf('spark.scheduler.mode', 'FAIR')
您可以请求使用:
rows = self.cursor.sql("SELECT someone FROM something")
for row in rows.collect():
print row
我实际上是通过命令运行代码:
spark-submit --master yarn MyProgram.py
我猜你基本上可以使用安装了 pyspark 的 python 运行:
python MyProgram.py
但我没有尝试过,所以我不能保证它有效
推荐阅读
- excel - 使用范围双击某些选项调用日历
- automapper - AutoMapper:将实体映射到带有后缀的目的地
- java - 为什么 getClass().getResourceAsStream(file.getAbsolutePath()) 会抛出 nullPointerException?
- c# - 将文本从 Windows-1252 转换为 iso-8859-1 的问题
- r - 如何在R中循环数据?
- google-cloud-platform - 如何将 Java REST 应用程序迁移到 Google Cloud
- android - 当用户单击“完成”时返回主页片段
- python - 从 BGR 转换为 HSV 并再次转换回来时,图像颜色看起来很糟糕
- kubernetes - AWS EKS 网络中的链码实例化失败
- preloadjs - 当我将“false”添加到 createjs.LoadQueue() 时,为什么进度事件会停止触发?