Dataphin 内置pyhive使用说明

本文涉及的产品
智能数据建设与治理Dataphin,200数据处理单元
简介: Dataphin内置pyhive使用说明

使用 Hive 作为离线计算引擎(CDP,CDH,TDH,EMR 等)构建数据平台时,纯 SQL 缺少过程语言的能力,比如,if-else 条件控制,循环控制,设置程序内变量等。一般用户会借助其他语言来实现过程化编程,如 Python,其中 pyhive 是使用非常广泛的 module。


本地使用 pyhive

以下是用户在本地使用 pyhive 连接 hive 处理数据的示例


Hive使用账号密码认证:

# 加载包
from pyhive import hive
# 建立连接
conn = hive.connect(host = '100.100.100.100',  # HiveServer 地址
                    port = 10000,              # 端口 
                    username = 'xxx',          # 账号
                    database = 'xxx'           # 数据库
                    password = 'xxx')          # 密码
                    
# 查询
cursor = conn.cursor()
cursor.execute('select * from table limit 10') # 业务处理语句
for result in cursor.fetchall():
    print(result)
    
# 关闭连接
cursor.close()
conn.close()

Hive使用Kerberos认证

# 外层会话先执行 kinit -kt {keytab} {principal@REALM} 通过kerberos认证
# 加载包
from pyhive import hive
# 建立连接
conn = hive.connect(host = '100.100.100.100',      # HiveServer
                    port = 10000,                  # 端口 
                    auth = 'KERBEROS',          
                    kerberos_service_name = 'hive',
                    database = 'xxx')
                    
# 查询
cursor = conn.cursor()
cursor.execute('select * from table limit 10')     # 业务处理语句
for result in cursor.fetchall():
    print(result)
    
# 关闭连接
cursor.close()
conn.close()


Dataphin 内使用 pyhive

在 Dataphin 内,也支持按照以上本地的方式使用 pyhive,但这种方式存在以下问题:

  1. 如果 Hive 使用账号密码认证,就需要开发者可以获取到账号密码,第一容易造成账号泄密,第二如果修改账号密码,需要同步更新程序或变量。
  2. 如果 Hive 使用 Kerberos 认证,除了开发者需要获取 keytab 容易造成泄密和修改的问题外,Kerberos 认证流程的代码实现也比较复杂
  3. Dataphin 无法对用户做鉴权,可以绕开 Dataphin 的权限体系
  4. 无法查询使用逻辑表


Dataphin 在 v3.10 版本内置了 pyhive,调用内部 pyhive 时,系统将自动使用项目计算源中的认证配置来初始化 Hive 连接,提供一个 pyhive.hive.Cursor 对象 (hivec)。上文中的示例使用内置 pyhive 改写后如下:

# hivec 是 pyhive.hive.Cursor 对象
from dataphin import hivec
# 查询
hivec.execute('select * from table limit 10')
for result in hivec.fetchall():
    print(result)
# 系统自动 close connection,无须显式调用 close()


可以使用以下代码查看 hivec 的方法

from dataphin import hivec
print(dir(hivec))

hivec 主要有以下方法,与 pyhive.hive.Cursor 的同名方法一致:

  • execute,执行 SQL 语句
  • fetchall,获取所有查询结果
  • fetchmany,获取指定行数的查询结果
  • fetchone,获取一行查询结果
  • close,关闭 cursor 和 connection


以上就是 Dataphin 内置 pyhive 的全部内容。

相关文章
|
数据采集 运维 Java
有了 Dataphin v4.0,跨系统调度依赖再也不是难题
Dataphin v4.0引入了新的触发式节点,用于解决多数据平台间的调度问题。当上游系统(如Unix的crontab)完成数据采集后,可通过触发式节点通知Dataphin开始拉取数据,避免传统轮询方式的效率低和资源占用。触发式节点需满足Dataphin OpenAPI开通和网络连通条件,并通过SDK进行外部触发。示例展示了如何创建和使用触发式节点,以及使用Java SDK模拟触发请求。
671 0
|
JSON 缓存 运维
Dataphin数据服务API开启IP白名单调用鉴权
Dataphin数据服务API提供便捷的API开发及运维、应用调用权限管理等功能,为数据业务化提供了坚实的支撑。在应用调用API的时候,Dataphin可支持通过AcessKey方式的调用鉴权。而在企业内部网络中,也可以使用IP白名单方式简化调用。本文将为您介绍如何开启IP白名单的调用鉴权。
411 0
|
7月前
|
SQL 分布式计算 资源调度
Dataphin功能Tips系列(48)-如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
215 4
|
27天前
|
SQL 运维 关系型数据库
【产品升级】Dataphin V5.0版本发布:助力出海业务、增全量一体集成、异步调用API等更多功能等你发现
Dataphin是瓴羊推出的智能数据建设与治理平台,基于阿里巴巴内部实践,提供一站式数据建设与治理能力。V5.0版本研发新增支持Databricks作为离线计算引擎、支持MySQL数据库一键增全量同步、支持管理Hudi、Delta Lake表等;资产运营与消费持续提效,支持批量编辑目录名称及描述、Quick BI仪表板的上架管理等功能,增加资产可用性与盘点效率。
138 8
|
4月前
|
运维 安全 关系型数据库
【产品升级】Dataphin V5.1版本发布:跨云数据集成、指标管理、平台运维带来重大更新!
V5.1版本新增多项功能:对接AWS生态(支持Amazon EMR、Redshift等),强化研发技术支撑(如API认证升级、全量任务隔离),完善运营消费链路(新增业务指标管理、指标关系图),提升平台综合能力(自定义菜单、缩短升级停机时间)。这些功能助力企业实现高效数据治理与分析,未来还将拓展智能化与国际化支持。
293 0
|
调度 存储 数据库
|
9月前
|
安全 数据挖掘 大数据
开放、兼容的数据建设与治理平台——瓴羊Dataphin“进化论” |【瓴羊数据荟】数据MeetUp第三期
Dataphin的技术架构与实践路径,涵盖多引擎兼容、混合云架构、统一资产消费等方面,Dataphin通过持续升级,帮助企业实现全生命周期的数据资产管理,助力企业在大模型时代更好地“建好数据”、“用好数据”。
481 87
开放、兼容的数据建设与治理平台——瓴羊Dataphin“进化论” |【瓴羊数据荟】数据MeetUp第三期
|
7月前
|
SQL 关系型数据库 数据库连接
|
Shell 网络安全 Python
妙用Dataphin的Python三方包管理
Dataphin 中的 Python 计算任务不随意增加内置 module 是为了避免安装包过大和升级时间延长。用户可通过执行 "pip list" 或 "pip3 list" 查看内置 module 列表。 Dataphin 的 Python 环境在镜像中固定,无法用户直接修改,但 v3.14 版本起支持在线安装或上传安装三方包,预安装后在任务中显式引入。对于依赖操作系统库的 module,用户需上传包含相应程序的自定义安装包进行预安装。此外,此功能也可扩展用于管理 shell 任务所需的系统程序。
421 0