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

相关文章
|
9月前
|
存储 分布式计算 Hadoop
Dataphin功能Tips系列(86)Dataphin“查询加速”方案:提升大表分析性能,节省存储保障数据一致性
Dataphin推出“查询加速”功能,无需数据同步,通过一键映射外部Catalog,实现对MaxCompute/Hadoop大表的透明加速。利用StarRocks等引擎秒级响应即席查询,保障权限统一与数据安全,降低存储成本与运维压力。
289 0
|
3月前
|
Apache 芯片 异构计算
刚发布的 Gemma4 12B 能打吗?三款最新顶流开源模型跑分全解读,堪比跟去年主流闭源模型
Gemma4 12B(6月3日刚发布)、Gemma4 26B A4B、Qwen3.6-35B-A3B,三款近期开源模型在 MMLU-Pro、GPQA Diamond、AIME 等评测中全面对标 Claude Sonnet 4 和 GPT-4.1 这两款 2025 年中闭源旗舰 ,数学科学推理甚至大幅领先。一文看懂跑分、架构差异和使用场景。
927 0
|
11月前
|
数据采集 SQL 数据可视化
Dataphin功能Tips系列(72)一键数据探查,打造高质量数据开发、分析流程
Dataphin数据探查功能助力高效识别数据质量问题,支持手动与自动两种探查模式。通过一键生成质量报告,快速检测空值、异常值、重复值等问题,全面掌握数据分布与健康状况,提升数据准备与分析准确性。
617 7
|
数据可视化 Java 数据库连接
Dataphin JDBC:助您实现数据权限的集中管理
Dataphin JDBC提供了统一访问Dataphin中数据的功能,助您实现数据权限的集中式管理。
599 3
|
SQL 关系型数据库 数据库连接
|
9月前
|
存储 分布式计算 关系型数据库
Dataphin功能Tips系列(80)每日新增表高效同步!脚本模式+参数化配置助你轻松搞定动态数据同步
某电商平台每日订单表按日期命名,需同步至MaxCompute统一表。通过Dataphin离线集成,配置动态表名变量`${yyyy_MM_dd}`并结合运行参数,实现自动同步最新订单数据,操作简便高效。
276 0
|
11月前
|
数据采集 监控 调度
Dataphin功能Tips系列(76)质量规则调度配置系列(3)-定时调度
Dataphin「定时调度」功能支持按需设定数据质量检测时间与频率,适用于定期检查数据质量问题的场景。提供手动配置和系统推荐两种方式,可自动执行规则并生成报告,帮助用户高效发现并处理问题。
340 9
|
数据采集 SQL 人工智能
告别数据混乱:瓴羊Dataphin 通过AI+标准让企业数据“活”起来 | 【瓴羊数据荟】数据MeetUp第四期
AI技术的快速发展促使企业重新审视数据治理的重要性。当前,企业在数据治理中常因指标口径不统一、数据血缘不透明等问题陷入困境。阿里云智能集团瓴羊高级技术专家周鑫提出,以数据标准为核心贯穿数据全生命周期,可有效解决治理难题。
926 15
告别数据混乱:瓴羊Dataphin 通过AI+标准让企业数据“活”起来 | 【瓴羊数据荟】数据MeetUp第四期
|
人工智能 JSON 运维
Dataphin MCP:让数据查询 “轻而易举”
Dataphin推出MCP服务,助力Agent高效获取数据,释放企业数据价值。
1162 10
|
设计模式 网络协议 Java
04.里式替换原则介绍
里式替换原则(LSP)是面向对象设计的重要原则之一,确保子类可以无缝替换父类而不破坏程序功能。本文详细介绍了LSP的定义、背景、理解方法及应用场景,通过电商支付和鸟类飞行案例展示了如何遵循LSP,并分析了其优缺点。LSP强调子类应保持父类的行为一致性,有助于提高代码的可扩展性、可维护性和可重用性,但也可能导致过度设计。最后,对比了LSP与多态的区别,明确了LSP作为设计原则的重要性。
648 4

热门文章

最新文章