Hadoop streaming使用自定義python版本和第三方庫

在使用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

相關文章
相關標籤/搜索