在使用Hadoop的過程當中,遇到了自帶python版本比較老的問題.python
下面以python3.7爲例,演示如何在hadoop上使用自定義的python版本以及第三方庫.linux
1.在https://www.python.org下載Python-3.7.2.gz包app
2.在linux環境下:工具
tar -xvf Pthon-3.7.2 #解壓文件 cd Python-3.7.2 ./configure -- prefix=~/python37 #這裏是你剛剛解壓的路徑 make -j make install
3.這樣就生成了一個python37文件夾oop
4.在本地python安裝路徑的site-packages中(你的包管理工具不一樣,本地包安裝路徑也不一樣)複製本身須要的第三方庫的文件,放入python37/lib/python3.7/site-packages中spa
5.在linux環境下:code
cd /home/username #路徑能夠自選 tar czf python37.tar.gz python37 #打包成tar.gz文件 ${HADOOP_HOME}/bin/hadoop dfs -copyFromLocal python37.tar.gz username/python37.tar.gz #上傳到HADOOP
6.將這個包含第三方庫的python37.tar.gz文件上傳到hadoop上blog
7.在mapreduce的sh腳本中用以下代碼使用剛剛上傳的python環境hadoop
PYTHON_DEPEND=username/python37.tar.gz #剛剛上傳的hadoop中對應地址 depend_python="${PYTHON_DEPEND}" ${HADOOP_BIN} streaming \ -cacheArchive "${depend_python}#python" \ -input "${INPUT_PATH}" \ -output "${OUTPUT_PATH}" \ -mapper "python/python37/bin/python3 mapper.py"
reducer也是同理~input