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 相关文章推荐
基于Django filter中用contains和icontains的区别(详解)
Dec 12 Python
python 判断网络连通的实现方法
Apr 22 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
实例详解Python装饰器与闭包
Jul 29 Python
Python 处理文件的几种方式
Aug 23 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 Python
Python读取Excel数据并生成图表过程解析
Jun 18 Python
Python3爬虫mitmproxy的安装步骤
Jul 29 Python
django下创建多个app并设置urls方法
Aug 02 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 Python
关于Numpy之repeat、tile的用法总结
Jun 02 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设计模式 Builder(建造者模式)
2011/06/26 PHP
php限制上传文件类型并保存上传文件的方法
2015/03/13 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
php简单判断文本编码的方法
2015/07/30 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
python实现文件路径和url相互转换的方法
2015/07/06 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
Python属性和内建属性实例解析
2020/01/14 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
python实现IOU计算案例
2020/04/12 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
教育学专业毕业生的自我评价
2013/11/21 职场文书
应聘收银员个人的求职信
2013/11/30 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python