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

相关文章
|
18天前
|
数据采集 DataWorks 监控
‌DataWorks的主要功能‌
‌DataWorks的主要功能‌
47 1
|
3月前
|
运维 DataWorks 监控
DataWorks产品使用合集之如何自定义UDTF
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何查询授权情况
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
存储 JSON DataWorks
DataWorks产品使用合集之如何通过数据集成将API接口产生的数据集成到DataWorks
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
机器学习/深度学习 分布式计算 大数据
MaxCompute产品使用合集之如何从Dataphin使用界面查看版本
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
机器学习/深度学习 分布式计算 DataWorks
MaxCompute产品使用问题之一个项目只能绑定一个dataworks工作空间吗
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4月前
|
DataWorks Oracle 关系型数据库
DataWorks产品使用合集之如何打通两个DataWorks的数据源
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
SQL 数据采集 DataWorks
DataWorks产品使用合集之工作空间代码备份该如何操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
47 0
|
5月前
|
机器学习/深度学习 分布式计算 DataWorks
MaxCompute产品使用问题之在dataworks中,如何查看所有的udf和resouce列表
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
6月前
|
数据采集 运维 Kubernetes
Dataphin
Dataphin
107 2