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创建列表并给列表赋初始值的方法
Jul 28 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 Python
基于django传递数据到后端的例子
Aug 16 Python
Python pickle模块实现对象序列化
Nov 22 Python
python matplotlib实现将图例放在图外
Apr 17 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
Python 私有属性和私有方法应用场景分析
Jun 19 Python
python实现canny边缘检测
Sep 14 Python
Python调用ffmpeg开源视频处理库,批量处理视频
Nov 16 Python
python 通过使用Yolact训练数据集
Apr 06 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
文章推荐系统(二)
2006/10/09 PHP
一个PHP日历程序
2006/12/06 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
Hibernate持久层技术
2013/12/16 面试题
网吧收银员岗位职责
2013/12/14 职场文书
安全生产管理合理化建议书
2014/03/12 职场文书
治安消防安全责任书
2014/07/23 职场文书
主持人大赛开场白
2015/05/29 职场文书
人身损害赔偿协议书
2016/03/22 职场文书
golang中的并发和并行
2021/05/08 Golang
一行Python命令实现批量加水印
2022/04/07 Python