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网络编程实例简析
Sep 26 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
Apr 27 Python
python+pandas分析nginx日志的实例
Apr 28 Python
python实现简单flappy bird
Dec 24 Python
Pyinstaller打包.py生成.exe的方法和报错总结
Apr 02 Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 Python
使用python切片实现二维数组复制示例
Nov 26 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 Python
Python Handler处理器和自定义Opener原理详解
Mar 05 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
Python爬虫之爬取某文库文档数据
Apr 21 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 基于文件头的文件类型验证类函数
2012/05/01 PHP
php页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
php权重计算方法代码分享
2014/01/09 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
Python使用django搭建web开发环境
2017/06/09 Python
pandas中去除指定字符的实例
2018/05/18 Python
pybind11在Windows下的使用教程
2019/07/04 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
python变量的作用域是什么
2020/05/26 Python
Python新手学习函数默认参数设置
2020/06/03 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
少先队入队活动方案
2014/02/08 职场文书
幼儿园秋游感想
2014/03/12 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
大学生军训感言
2015/08/01 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers