transform python環(huán)境快速配置方法
經(jīng)常在數(shù)據(jù)開(kāi)發(fā)中需要搞udf,最近發(fā)現(xiàn)transform更加方便易用,但是經(jīng)常會(huì)涉及到集群python版本不一、包不全或者部分機(jī)器上沒(méi)有安裝python。
所以咱們需要快速的進(jìn)行環(huán)境配置。
因?yàn)閙ac自帶安裝好的python,所以就不講怎么安裝了??梢匀ス倬W(wǎng)下個(gè): https://www.python.org/downloads/source/
1、安裝虛擬環(huán)境工具:
執(zhí)行:pip install virtualenv,如果沒(méi)有pip的話可以google一把,自行安裝
2、創(chuàng)建虛擬環(huán)境:
新建一個(gè)目錄,各種環(huán)境文件放里面:
midir envs
cd 到該目錄下,創(chuàng)建python虛擬環(huán)境:
virtualenv python-env
創(chuàng)建完了可以看到會(huì)新增一個(gè)python-env文件夾。
如果你對(duì)python版本有要求,也可以指定python版本進(jìn)行創(chuàng)建:
virtualenv -p /usr/bin/python2.7 python-env
3、在新的虛擬環(huán)境安裝自己需要的包:
激活虛擬環(huán)境:
source python-env/bin/activate
這時(shí)候在這個(gè)環(huán)境下安裝的py包都是在該環(huán)境下的,可以用pip install進(jìn)行安裝
例如:pip install pyhs2
(安裝pyhs2的時(shí)候出現(xiàn)異常 Cannot uninstall 'six'. It is a distutils installed project,直接跳過(guò) sudo pip install pyhs2 --ignore-installed six)
退出虛擬環(huán)境:
deactivate
4、修改文件配置:
進(jìn)入虛擬環(huán)境的bin文件夾
修改activate文件內(nèi)的路徑:
DIR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" VIRTUAL_ENV="$( readlink -f "${DIR_PATH}/../" )"
5、打包文件:
進(jìn)入 python-env文件夾內(nèi)(因?yàn)槟夸泴蛹?jí)少一點(diǎn)), 打包虛擬環(huán)境:
tar -zcf python-env.tgz *
檢查一下打包文件是否把對(duì)應(yīng)包打進(jìn)去了,查看打包是否把pyhs2打進(jìn)去了:
tar -tvf python-env.tgz |grep "pyhs2"
6、如何引用python環(huán)境
新建shell文件例如test.sh,代碼如下:
source ./python-env.tgz/bin/activate python test_transform.py
寫(xiě)好 test_ transform 的代碼,例如簡(jiǎn)單的計(jì)算(不要糾結(jié)案例的業(yè)務(wù)邏輯):
# -*- coding: utf-8 -*- import sys def main(): data_list = sys.stdin.readlines() # 獲取id循環(huán)次數(shù),除數(shù)-1,結(jié)果加+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:
進(jìn)入hive客戶端后,加載上述文件:
ADD ARCHIVE hdfs:///user/tmp/python-env.tgz; ADD FILE hdfs:///user/tmp/test.sh; ADD FILE hdfs:///user/tmp/test_transform.py;
執(zhí)行hsql:
select transform(id) USING 'test.sh' as (id,price1,price2) from ( select 100 as id from dual )
以上整個(gè)流程搞通,那么就算集群上沒(méi)有裝python,你都可以自己創(chuàng)建transform進(jìn)行快速開(kāi)發(fā)了。
以上所述是小編給大家介紹的transform python環(huán)境快速配置方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
numpy多項(xiàng)式擬合函數(shù)polyfit的使用方法代碼
這篇文章主要給大家介紹了關(guān)于numpy多項(xiàng)式擬合函數(shù)polyfit的使用方法,np.polyfit是Numpy庫(kù)中的一個(gè)函數(shù),用于在最小二乘意義下擬合多項(xiàng)式曲線到數(shù)據(jù)點(diǎn)集,需要的朋友可以參考下2024-01-01Python格式化輸出字符串方法小結(jié)【%與format】
這篇文章主要介紹了Python格式化輸出字符串方法,結(jié)合實(shí)例形式總結(jié)分析了使用%與format函數(shù)進(jìn)行字符串格式化操作相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2018-10-10python使用mysql數(shù)據(jù)庫(kù)示例代碼
本篇文章主要介紹了python使用mysql數(shù)據(jù)庫(kù)示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05python 實(shí)現(xiàn)交換兩個(gè)列表元素的位置示例
今天小編就為大家分享一篇python 實(shí)現(xiàn)交換兩個(gè)列表元素的位置示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06Python實(shí)現(xiàn)DHCP請(qǐng)求方式
這篇文章主要介紹了Python實(shí)現(xiàn)DHCP請(qǐng)求方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06對(duì)python3.4 字符串轉(zhuǎn)16進(jìn)制的實(shí)例詳解
今天小編就為大家分享一篇對(duì)python3.4 字符串轉(zhuǎn)16進(jìn)制的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06python實(shí)現(xiàn)本地圖片轉(zhuǎn)存并重命名的示例代碼
今天小編就為大家分享一篇python實(shí)現(xiàn)本地圖片轉(zhuǎn)存并重命名的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10詳解Python的數(shù)據(jù)庫(kù)操作(pymysql)
這篇文章主要介紹了Python的數(shù)據(jù)庫(kù)操作(pymysql),非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-04-04OpenCV學(xué)習(xí)之圖像形態(tài)學(xué)處理詳解
這篇文章主要為大家詳細(xì)介紹了OpenCV中圖像形態(tài)學(xué)處理的相關(guān)知識(shí),例如:腐蝕操作、膨脹操作、開(kāi)閉運(yùn)算、梯度運(yùn)算、Top Hat Black Hat運(yùn)算等操作,需要的可以參考一下2023-02-02