Python内置资源包

在开发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 odpsfrom dataphin import hivec对象句柄方式进行使用。该方式解决了本地方式存在的以下问题:

  1. 如果Hive使用账号密码认证,就需要开发者可以获取到账号密码。这容易造成账号泄露,同时如果修改账号密码,需要同步更新程序或变量。

  2. 如果Hive使用Kerberos认证,除了开发者需要获取keytab容易造成泄密和修改的问题外,Kerberos认证流程的代码实现也比较复杂。

  3. Dataphin无法对用户做鉴权,可以绕开Dataphin的权限体系。

  4. 无法查询使用逻辑表。

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和connectionclose

使用示例

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)