使用 python 访问 HDInsight Hive

2024-02-15

我们有一个 HDInsight 集群,其中包含 HIVE 中的一些表。我想从客户端计算机(Azure 外部)的 Python 3.6 查询这些表。

我尝试过使用PyHive, pyhs2并且impyla但我遇到了所有这些问题。

有没有人有一个访问的工作示例HDInsight HIVE来自Python?

我对此经验很少,不知道如何配置PyHive(这似乎是最有希望的),特别是在授权方面。

With impyla:

from impala.dbapi import connect
conn = connect(host='redacted.azurehdinsight.net',port=443)
cursor = conn.cursor()
cursor.execute('SELECT * FROM cs_test LIMIT 100')
print(cursor.description)  # prints the result set's schema
results = cursor.fetchall()

这给出:

Traceback (most recent call last):
  File "C:/git/ml-notebooks/impyla.py", line 3, in <module>
    cursor = conn.cursor()
  File "C:\Users\chris\Anaconda3\lib\site-packages\impala\hiveserver2.py", line 125, in cursor
    session = self.service.open_session(user, configuration)
  File "C:\Users\chris\Anaconda3\lib\site-packages\impala\hiveserver2.py", line 995, in open_session
    resp = self._rpc('OpenSession', req)
  File "C:\Users\chris\Anaconda3\lib\site-packages\impala\hiveserver2.py", line 923, in _rpc
    response = self._execute(func_name, request)
  File "C:\Users\chris\Anaconda3\lib\site-packages\impala\hiveserver2.py", line 954, in _execute
    .format(self.retries))
impala.error.HiveServer2Error: Failed after retrying 3 times

With Pyhive:

from pyhive import hive

conn = hive.connect(host="redacted.azurehdinsight.net",port=443,auth="NOSASL")
#also tried other auth-types, but as i said, i have no clue here

这给出:

Traceback (most recent call last):
  File "C:/git/ml-notebooks/PythonToHive.py", line 3, in <module>
    conn = hive.connect(host="redacted.azurehdinsight.net",port=443,auth="NOSASL")
  File "C:\Users\chris\Anaconda3\lib\site-packages\pyhive\hive.py", line 64, in connect
    return Connection(*args, **kwargs)
  File "C:\Users\chris\Anaconda3\lib\site-packages\pyhive\hive.py", line 164, in __init__
    response = self._client.OpenSession(open_session_req)
  File "C:\Users\chris\Anaconda3\lib\site-packages\TCLIService\TCLIService.py", line 187, in OpenSession
    return self.recv_OpenSession()
  File "C:\Users\chris\Anaconda3\lib\site-packages\TCLIService\TCLIService.py", line 199, in recv_OpenSession
    (fname, mtype, rseqid) = iprot.readMessageBegin()
  File "C:\Users\chris\Anaconda3\lib\site-packages\thrift\protocol\TBinaryProtocol.py", line 134, in readMessageBegin
    sz = self.readI32()
  File "C:\Users\chris\Anaconda3\lib\site-packages\thrift\protocol\TBinaryProtocol.py", line 217, in readI32
    buff = self.trans.readAll(4)
  File "C:\Users\chris\Anaconda3\lib\site-packages\thrift\transport\TTransport.py", line 60, in readAll
    chunk = self.read(sz - have)
  File "C:\Users\chris\Anaconda3\lib\site-packages\thrift\transport\TTransport.py", line 161, in read
    self.__rbuf = BufferIO(self.__trans.read(max(sz, self.__rbuf_size)))
  File "C:\Users\chris\Anaconda3\lib\site-packages\thrift\transport\TSocket.py", line 117, in read
    buff = self.handle.recv(sz)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

根据官方文件了解并解决从 HDInsight 上的 WebHCat 收到的错误 https://learn.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-templeton-webhcat-debug-errors,如下所述。

什么是WebHCat

WebHCat 是 HCatalog 的 REST API、Hadoop 的表和存储管理层。 WebHCat 是在 HDInsight 群集上默认启用, and 被各种工具用来提交作业、获取作业状态等。无需登录集群。

因此,解决方法是使用 WebHCat 在 Python 中运行 Hive QL,请参阅 Hivedocument https://cwiki.apache.org/confluence/display/Hive/WebHCat学习和使用它。作为参考,MSDN上有一个类似的thread https://social.msdn.microsoft.com/Forums/en-US/b8026143-975f-46c9-b937-99f604e3b757/connect-to-hive-in-hdinsight-using-python-app-on-remote-linuxbased-server?forum=hdinsight对此进行了讨论。

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python 访问 HDInsight Hive 的相关文章

随机推荐

  • 如何:响应式可用 Wcf 双工通信

    我正在开发一个使用 WCF 在服务器和客户端之间进行通信的应用程序 服务器具有不断变化的服务数量 以及一项主服务 客户端可以查询有关其他服务的信息 然后使用主服务中的信息订阅他们想要的服务 当子服务发生更改 添加 删除等 时 主服务向订阅客
  • 当当前输入有值时如何前进到下一个表单输入?

    我有一个包含很多条目的表格 在当前文本框中输入值后 我想将焦点更改为下一个文本框 并希望继续此过程直到最后一个字段 我的问题是 一旦我在文本框中输入值 是否可以通过 JavaScript 编码模拟按 Tab 键时发生的情况 在不按键盘上的
  • [innerHTML] 内的 Angular routerLink

    我一直在寻找一种方法 使标准 a href 链接在动态加载到 innerHTML 中时能够像 routerLinks 一样工作 它似乎不是标准的东西 我找不到任何可以满足我需要的东西 我有一个可行的解决方案 但想知道是否有人知道更好的方法来
  • 定义 XML 架构 (XSD) 时“选择”“组”元素是否有效

    定义 XML 架构 XSD 时 选择 组 元素是否有效 即以下有效
  • Google Hangouts API:我可以发起“直播”环聊吗?

    有没有办法通过 API 发起 直播 环聊 我已经创建了我的应用程序并且运行良好 但是我需要为我的客户提供环聊的嵌入代码 我似乎找不到任何有关如何通过环聊按钮启动此类环聊的文档 https developers google com hang
  • 如何快速获取本周星期一的日期

    我正在尝试获取本周星期一的日期 在我的表格视图中 这被视为一周的第一天 我还需要获取本周的星期日 在我的表视图中 这被视为一周的最后一天 目前的尝试 let date NSDate let calendar NSCalendar curre
  • 当找到预期结果时是否可以从 lambda 中中断

    我是Python新手 刚刚对Lambda表达式非常感兴趣 我遇到的问题是使用 lambda 过滤器从元素列表中找到一个且仅有一个目标元素 理论上 当找到目标元素时 就没有再继续下去的意义了 With for loop这很简单break循环
  • jQuery Jcrop setSelect 直观显示,但是点击移动时会跳转

    我正在使用 jQuery 插件 Jcrop 我对名为 setSelect 的初始设置之一有疑问 该属性接受一个包含两组 x 和 y 坐标 左上角和右下角 的数组 img src blah
  • 如何让输出显示在 Visual Studio 2005 错误列表的“消息”窗格中?

    我有一个像这样的头文件 ifndef GEN NOTE MARKERS TO DEVELOPERS HPP define GEN NOTE MARKERS TO DEVELOPERS HPP ifdef DEBUG macros for t
  • 如何在 DRF 中序列化通用外键

    我有带有通用外键的模型 我想序列化该模型 model py class AddressType models Model content type models ForeignKey ContentType object id models
  • 使用调试器 gdb 时未知的结束信号

    我已经在 Mac OS X 上安装了 GDB 为了测试它是否有效 我使用了以下 C 程序 include
  • 为所有实体设置默认分配大小?

    我想将默认设置为 50 的默认 AllocationSize 设置为另一个值 有没有办法做到这一点 我更喜欢使用默认的 JPA 来执行此操作 但 Eclipselink 也可以 我不想在我使用的每个实体中指定分配大小 TableGenera
  • 如何使用 AntiXss 库正确清理内容?

    我有一个简单的论坛应用程序 当有人发布任何内容时 我会 post Content Sanitizer GetSafeHtml post Content 现在 我不确定我是否做错了什么 或者发生了什么 但它不允许几乎没有 html 甚至简单
  • System.Data.SqlClient.SqlException:“关键字“Table”附近的语法不正确。”

    我正在尝试使用 Windows 窗体 C 创建一个登录系统 但它给了我一个错误 我正在使用 MySQL 数据库和来自 youtube 的教程 我不知道出了什么错误 该项目包含三个表单 登录表单 注册表单和主程序表单 using System
  • 设置带有条件的标题属性并使用角度翻译

    我在某些条件下使用标题属性 我的代码是 li title span pack details span li 当管理员为真时 它会显示购买许可证包 但是如何使用翻译过滤器将 1 变为 i18n 键 我试过这个 li title span p
  • 无法使用 Azure DevOps Pull 请求对构建错误进行排队

    我想在拉取请求开始合并之前触发构建 在 Azure DevOps 中 对于此选项 我在分支策略下添加了构建验证 但是 如果我创建了一个新的拉取请求 我会收到 无法对构建进行排队 的消息 请任何人告诉我我选择的选项解决了我的要求 如果是 如何
  • 使用node js从ftp站点下载多个文件

    我正在尝试从根文件夹下载 ftp 服务器上的每个文件 我所做的是这样的 ftpClient ls function err res res forEach function file console log file name ftpCli
  • matplotlib 刻度厚度

    有没有一种方法可以增加 matplotlib 中刻度的厚度和大小 而不必编写如下长段代码 for line in ax1 yaxis get ticklines line set markersize 25 line set markere
  • 如何将公式转换为析取范式?

    说给定一个公式 t1 gt 2 或 t2 gt 3 且 t3 gt 1 我希望得到它的析取范式 t1 gt 2 且 t3 gt 1 或 t2 gt 3 且 t3 gt 1 在Z3中如何实现这一点 Z3没有将公式转换为DNF的API或策略 然
  • 使用 python 访问 HDInsight Hive

    我们有一个 HDInsight 集群 其中包含 HIVE 中的一些表 我想从客户端计算机 Azure 外部 的 Python 3 6 查询这些表 我尝试过使用PyHive pyhs2并且impyla但我遇到了所有这些问题 有没有人有一个访问