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多线程编程方式分析示例详解
Dec 06 Python
python局域网ip扫描示例分享
Apr 03 Python
Django的session中对于用户验证的支持
Jul 23 Python
深入理解Python3 内置函数大全
Nov 23 Python
Django之模型层多表操作的实现
Jan 08 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
python3中的eval和exec的区别与联系
Oct 10 Python
Python MySQL 日期时间格式化作为参数的操作
Mar 02 Python
python“静态”变量、实例变量与本地变量的声明示例
Nov 13 Python
python实现KNN近邻算法
Dec 30 Python
Python Django项目和应用的创建详解
Nov 27 Python
python使用pycharm安装pyqt5以及相关配置
Apr 22 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
1.PHP简介
2006/10/09 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
javascript replace方法与正则表达式
2008/02/19 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
2020/09/24 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
python中有关时间日期格式转换问题
2019/12/25 Python
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
儿科护士自我鉴定
2013/10/14 职场文书
《草原》教学反思
2014/02/15 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
个人融资协议书
2014/10/02 职场文书
财务务虚会发言材料
2014/10/20 职场文书
朋友离别感言
2015/08/04 职场文书
会议承办单位欢迎词
2015/09/30 职场文书