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单线程实现多个定时器示例
Mar 30 Python
python处理大数字的方法
May 27 Python
Python复数属性和方法运算操作示例
Jul 21 Python
Python selenium根据class定位页面元素的方法
Feb 26 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
Mar 05 Python
如何使用Python标准库进行性能测试
Jun 25 Python
Python文件操作函数用法实例详解
Dec 24 Python
Python基础之高级变量类型实例详解
Jan 03 Python
python能做哪方面的工作
Jun 15 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
Jun 24 Python
python爬虫请求头设置代码
Jul 28 Python
Python使用Web框架Flask开发项目
Jun 01 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面向对象public private protected 访问修饰符
2013/06/30 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
jquery中获取id值方法小结
2013/09/22 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
python pickle 和 shelve模块的用法
2013/09/16 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
Python配置文件处理的方法教程
2019/08/29 Python
python生成大写32位uuid代码
2020/03/03 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
打架检讨书范文
2015/01/27 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
升学宴学生致辞
2015/07/27 职场文书
小学三年级作文之写景
2019/11/05 职场文书
python批量创建变量并赋值操作
2021/06/03 Python