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 04 Python
详解Python中的join()函数的用法
Apr 07 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
对python3中的RE(正则表达式)-详细总结
Jul 23 Python
python 内置函数汇总详解
Sep 16 Python
Python 导入文件过程图解
Oct 15 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
python入门学习关于for else的特殊特性讲解
Nov 20 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
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
Angular.js实现动态加载组件详解
2017/05/28 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
让python json encode datetime类型
2010/12/28 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
解决python报错MemoryError的问题
2018/06/26 Python
对Python信号处理模块signal详解
2019/01/09 Python
Python Subprocess模块原理及实例
2019/08/26 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
python模块常用用法实例详解
2019/10/17 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
Python经纬度坐标转换为距离及角度的实现
2020/11/01 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
公司年会策划方案
2014/05/17 职场文书
就业协议书
2014/09/12 职场文书
行政主管岗位职责
2015/02/03 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
Go语言基础map用法及示例详解
2021/11/17 Golang