Dataphin 内置pyhive使用说明

简介: 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 的全部内容。

相关文章
|
7月前
|
存储 分布式计算 Hadoop
Dataphin功能Tips系列(86)Dataphin“查询加速”方案:提升大表分析性能,节省存储保障数据一致性
Dataphin推出“查询加速”功能,无需数据同步,通过一键映射外部Catalog,实现对MaxCompute/Hadoop大表的透明加速。利用StarRocks等引擎秒级响应即席查询,保障权限统一与数据安全,降低存储成本与运维压力。
224 0
|
9月前
|
数据采集 SQL 数据可视化
Dataphin功能Tips系列(72)一键数据探查,打造高质量数据开发、分析流程
Dataphin数据探查功能助力高效识别数据质量问题,支持手动与自动两种探查模式。通过一键生成质量报告,快速检测空值、异常值、重复值等问题,全面掌握数据分布与健康状况,提升数据准备与分析准确性。
543 7
|
SQL 关系型数据库 数据库连接
|
7月前
|
存储 分布式计算 关系型数据库
Dataphin功能Tips系列(80)每日新增表高效同步!脚本模式+参数化配置助你轻松搞定动态数据同步
某电商平台每日订单表按日期命名,需同步至MaxCompute统一表。通过Dataphin离线集成,配置动态表名变量`${yyyy_MM_dd}`并结合运行参数,实现自动同步最新订单数据,操作简便高效。
224 0
|
9月前
|
数据采集 监控 调度
Dataphin功能Tips系列(76)质量规则调度配置系列(3)-定时调度
Dataphin「定时调度」功能支持按需设定数据质量检测时间与频率,适用于定期检查数据质量问题的场景。提供手动配置和系统推荐两种方式,可自动执行规则并生成报告,帮助用户高效发现并处理问题。
290 9
|
SQL 分布式计算 资源调度
Dataphin功能Tips系列(48)-如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
518 4
|
人工智能 JSON 运维
Dataphin MCP:让数据查询 “轻而易举”
Dataphin推出MCP服务,助力Agent高效获取数据,释放企业数据价值。
1022 10
|
数据采集 SQL 人工智能
告别数据混乱:瓴羊Dataphin 通过AI+标准让企业数据“活”起来 | 【瓴羊数据荟】数据MeetUp第四期
AI技术的快速发展促使企业重新审视数据治理的重要性。当前,企业在数据治理中常因指标口径不统一、数据血缘不透明等问题陷入困境。阿里云智能集团瓴羊高级技术专家周鑫提出,以数据标准为核心贯穿数据全生命周期,可有效解决治理难题。
847 15
告别数据混乱:瓴羊Dataphin 通过AI+标准让企业数据“活”起来 | 【瓴羊数据荟】数据MeetUp第四期
|
存储 人工智能 运维
面向AI的服务器计算软硬件架构实践和创新
阿里云在新一代通用计算服务器设计中,针对处理器核心数迅速增长(2024年超100核)、超多核心带来的业务和硬件挑战、网络IO与CPU性能增速不匹配、服务器物理机型复杂等问题,推出了磐久F系列通用计算服务器。该系列服务器采用单路设计减少爆炸半径,优化散热支持600瓦TDP,并实现CIPU节点比例灵活配比及部件模块化可插拔设计,提升运维效率和客户响应速度。此外,还介绍了面向AI的服务器架构挑战与软硬件结合创新,包括内存墙问题、板级工程能力挑战以及AI Infra 2.0服务器的开放架构特点。最后,探讨了大模型高效推理中的显存优化和量化压缩技术,旨在降低部署成本并提高系统效率。
|
消息中间件 Kafka SQL