在开发Python计算任务时,通常需要根据业务场景安装如下资源包。以下资源包已经预置至系统内,您在开发代码过程中,只需要在代码开始部分添加import 资源包名
语句即可,例如import configparser
。
内置资源包列表
以下列表列出了Dataphin内置的资源包,同时您也可以在Shell计算任务中运行pip list
命令查看内置的资源包模块。
资源包 | 资源包版本 | 适用场景 |
configparser | >=3.5.0 | 读取配置文件。 |
DateTime | 无 | 数据处理。 |
hdfs | >=2.1.0 | Hadoop计算引擎下,使用HDFS。 |
jumpssh | 无 | 使用跳板机连接服务器。 |
mysql-connector-python | >=8.0.11 | 连接并操作MySQL。 |
numpy | 无 | 算法基础处理。 |
pandas | 无 | 算法基础处理。 |
psycopg2 | >=2.7.4 | 连接操作PostgreSQL。 |
pyhdfs | >=0.2.1 | Hadoop计算引擎下,使用PostgreSQL。 |
pyhs2 | >=0.6.0 | 连接并操作HDFS。 |
pyodps | >=0.7.16 | ODPS操作,适用ODPS。 |
pyspark | >=2.3.1 | Hadoop计算引擎下,使用Spark。 |
requests | >=2.4.0 | 算法基础处理。 |
scikit-learn | 无 | 算法基础处理。 |
scipy | 无 | 算法基础处理。 |
setuptools | >=3.0 | Python基础功能库。 |
yarn-api-client | >=0.2.3 | Yarn-api客户端。 |
Matplotlib | 无 | 算法基础处理。 |
Dataphin 内使用 PyHive和PyOdps。
在Dataphin内,除了支持本地方式使用PyHive和PyOdps外,还支持通过使用from dataphin import odps
和from dataphin import hivec
对象句柄方式进行使用。该方式解决了本地方式存在的以下问题:
如果Hive使用账号密码认证,就需要开发者可以获取到账号密码。这容易造成账号泄露,同时如果修改账号密码,需要同步更新程序或变量。
如果Hive使用Kerberos认证,除了开发者需要获取keytab容易造成泄密和修改的问题外,Kerberos认证流程的代码实现也比较复杂。
Dataphin无法对用户做鉴权,可以绕开Dataphin的权限体系。
无法查询使用逻辑表。
PyHive和PyOdps语法使用范围
支持查询物理表。
支持查询逻辑表。
支持调用系统Function和UDF。
支持空间变量名称替换,
${project_name}
或${LD_name}
替换为真实名称。支持全局变量和本地变量。
支持物理表DML和逻辑表DML。
支持物理表DDL。
支持对象鉴权。
hivec支持的方法
您可以通过使用以下代码查看hivec
的方法。
from dataphin import hivec
print(dir(hivec))
hivec与pyhive.hive.Cursor
的同名方法一致:
执行 SQL 语句:
execute
。获取所有查询结果:
fetchall
获取指定行数的查询结果:
fetchmany
。获取一行查询结果:
fetchone
。关闭cursor和connection:
close
。
使用示例
Hadoop计算引擎
通常在非Dataphin环境下,需要通过安装PyHive后,使用import
导入hive
包来连接操作Hive。示例代码如下:
# 加载包
from pyhive import hive
# 建立连接
conn = hive.connect(host = '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()
在Dataphin中您可以直接在Python计算任务通过from dataphin import hivec
导入预置资源包后操作Hive。示例代码如下:
# 导入包
from dataphin import hivec
# 运行sql语句
hivec.execute("SELECT * FROM ${project_dev}.table WHERE ds != 0")
# 打印sql结果
for result in hivec.fetchall():
print(result)
MaxCompute计算引擎
MaxCompute计算引擎下,可以在Python计算任务中通过from dataphin import odps
导入预置资源包后操作MaxCompute。示例代码如下:
# 加载包
from dataphin import odps
# 运行sql语句
odps.run_sql('SELECT * FROM ${project_dev}.table WHERE ds != 0')
# 以下写法可打印结果
with odps.execute_sql('select 1').open_reader() as reader:
for record in reader:
print(record)