transform python环境快速配置方法


Posted in Python onSeptember 27, 2018

经常在数据开发中需要搞udf,最近发现transform更加方便易用,但是经常会涉及到集群python版本不一、包不全或者部分机器上没有安装python。

所以咱们需要快速的进行环境配置。

因为mac自带安装好的python,所以就不讲怎么安装了。可以去官网下个: https://www.python.org/downloads/source/

1、安装虚拟环境工具:

执行:pip install virtualenv,如果没有pip的话可以google一把,自行安装

2、创建虚拟环境:

新建一个目录,各种环境文件放里面:

midir envs

cd 到该目录下,创建python虚拟环境:

virtualenv python-env

创建完了可以看到会新增一个python-env文件夹。

如果你对python版本有要求,也可以指定python版本进行创建:

virtualenv -p /usr/bin/python2.7 python-env

3、在新的虚拟环境安装自己需要的包:

激活虚拟环境:

source python-env/bin/activate

这时候在这个环境下安装的py包都是在该环境下的,可以用pip install进行安装

例如:pip install pyhs2

(安装pyhs2的时候出现异常 Cannot uninstall 'six'. It is a distutils installed project,直接跳过 sudo pip install pyhs2 --ignore-installed six)

退出虚拟环境:

deactivate

4、修改文件配置:

进入虚拟环境的bin文件夹

修改activate文件内的路径:

DIR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
VIRTUAL_ENV="$( readlink -f "${DIR_PATH}/../" )"

5、打包文件:

进入 python-env文件夹内(因为目录层级少一点), 打包虚拟环境:

tar -zcf python-env.tgz *

检查一下打包文件是否把对应包打进去了,查看打包是否把pyhs2打进去了:

tar -tvf python-env.tgz |grep "pyhs2"

6、如何引用python环境

新建shell文件例如test.sh,代码如下:

source ./python-env.tgz/bin/activate
python test_transform.py

写好 test_ transform 的代码,例如简单的计算(不要纠结案例的业务逻辑):

# -*- coding: utf-8 -*-
import sys

def main():
  data_list = sys.stdin.readlines()
  # 获取id循环次数,除数-1,结果加+1
  n = (data_list.__len__() - 1)/20 + 1
  j = 1
  while j <= n:
    id_lists = data_list[(j - 1) * 20:j * 20]
    ids = []
    for id in id_lists:
      ids.append(id.strip())
    j += 1
    for id in ids:
      result=[id,str(id*100),str(id+10)]
    print '\t'.join(str(e) for e in result)

if __name__ == "__main__":
  main()

把python-env.tgz、 test.sh、test_ transform.py 上传至集群的hdfs上,例如在:hdfs:///user/tmp

7、hive引用transfrom:

进入hive客户端后,加载上述文件:

ADD ARCHIVE hdfs:///user/tmp/python-env.tgz;
ADD FILE hdfs:///user/tmp/test.sh;
ADD FILE hdfs:///user/tmp/test_transform.py;

执行hsql:

select
transform(id) USING 'test.sh' as (id,price1,price2)
from
(
select 100 as id from dual
)

以上整个流程搞通,那么就算集群上没有装python,你都可以自己创建transform进行快速开发了。

以上所述是小编给大家介绍的transform python环境快速配置方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
基于python的汉字转GBK码实现代码
Feb 19 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
Python 描述符(Descriptor)入门
Nov 20 Python
python检查URL是否正常访问的小技巧
Feb 25 Python
浅谈Pandas 排序之后索引的问题
Jun 07 Python
python3安装speech语音模块的方法
Dec 24 Python
pandas DataFrame索引行列的实现
Jun 04 Python
Python字符串处理的8招秘籍(小结)
Aug 13 Python
python Kmeans算法原理深入解析
Aug 23 Python
使用pygame编写Flappy bird小游戏
Mar 14 Python
Python实现播放和录制声音的功能
Aug 12 Python
使用numpngw和matplotlib生成png动画的示例代码
Jan 24 Python
python如何求解两数的最大公约数
Sep 27 #Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 #Python
python斐波那契数列的计算方法
Sep 27 #Python
python实现汉诺塔算法
Mar 01 #Python
Python3中bytes类型转换为str类型
Sep 27 #Python
python求解数组中两个字符串的最小距离
Sep 27 #Python
Python开发的十个小贴士和技巧及长常犯错误
Sep 27 #Python
You might like
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
php支付宝APP支付功能
2020/07/29 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
上海期货面试题
2014/01/31 面试题
JAVA中运算符的分类及举例
2015/09/12 面试题
生产车间实习自我鉴定
2013/09/23 职场文书
人力资源主管岗位职责
2014/01/29 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
机关保密工作承诺书
2015/05/04 职场文书
暖春观后感
2015/06/08 职场文书
贷款工资证明范本
2015/06/12 职场文书
利用python做表格数据处理
2021/04/13 Python
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库