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 相关文章推荐
17个Python小技巧分享
Jan 23 Python
python统计文本字符串里单词出现频率的方法
May 26 Python
Python时间戳使用和相互转换详解
Dec 11 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
python 多线程重启方法
Feb 18 Python
基于python实现从尾到头打印链表
Nov 02 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
Feb 14 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
Pytorch 统计模型参数量的操作 param.numel()
May 13 Python
Python排序算法之插入排序及其优化方案详解
Jun 11 Python
FP-growth算法发现频繁项集——构建FP树
Jun 24 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中基本HTTP认证技巧分析
2015/03/16 PHP
PHP编写简单的App接口
2016/08/28 PHP
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
得到Class的三个过程是什么
2012/08/10 面试题
高中班级口号
2014/06/09 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
争先创优心得体会
2014/09/12 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
python 常用的异步框架汇总整理
2021/06/18 Python