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实现探测socket和web服务示例
Mar 28 Python
python通过ftplib登录到ftp服务器的方法
May 08 Python
Django框架中render_to_response()函数的使用方法
Jul 16 Python
Python自动化部署工具Fabric的简单上手指南
Apr 19 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
Apr 25 Python
Python3中在Anaconda环境下安装basemap包
Oct 21 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
Python3 实现串口两进程同时读写
Jun 12 Python
对PyQt5的输入对话框使用(QInputDialog)详解
Jun 25 Python
给我一面国旗 python帮你实现
Sep 30 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 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 smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
2016/05/21 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
2017/07/10 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
javascript操作JSON的要领总结
2012/12/09 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
python取代netcat过程分析
2018/02/10 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
python算法题 链表反转详解
2019/07/02 Python
详解Python3 pandas.merge用法
2019/09/05 Python
用python实现名片管理系统
2020/06/18 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
清明节文明祭祀倡议书
2015/04/28 职场文书
社区服务理念口号
2015/12/25 职场文书
中学音乐课教学反思
2016/02/18 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js
使用CSS实现音波加载效果
2023/05/07 HTML / CSS