自定義Python環境建立spark任務

2021-10-09 04:35:17 字數 1909 閱讀 2493

說明:

spark2.1.0(含)以下的版本不支援python3.6

安裝注意版本,請先檢查版本

1. 建立虛擬python環境

這個不多介紹了,不管是通過annaconda還是virtualenv,建立好你自己的python環境。如果你也碰到了離線的平台,建議自己用docker做乙個和伺服器一樣的系統版本,在上面完成虛擬的環境的建立,再將其拷貝出來;

2. 打包虛擬環境並將其上傳hdfs

建立好環境後,進入到環境所在的資料夾,例如你的環境是 ***/***/py35, cd到py35下,使用打包命令將當前目錄下的檔案打包

zip -r py35.zip ./*
在當前資料夾下,將其上傳至hdfs

hadoop fs -put ***/***/py35.zip hdfs://***/***/***/env/
3. 使用spark-submit命令引用

client模式下

--conf spark.yarn.dist.archives=hdfs://***/***/***/env/py35.zip#py35\

--conf spark.pyspark.driver.python=./py35/bin/python \

--conf spark.pyspark.python=./py35/bin/python \

注意 archivs命令後的#是必須的,它指的是將這個zip包解壓到的資料夾

cluster模式下,driver端可以略去

--conf spark.yarn.dist.archives=hdfs://***/***/***/env/py35.zip#py35\

--conf spark.pyspark.python=./py35/bin/python \

一般其他的文章到這一步就結束了,但我的還是報錯,說pandas的的dependency numpy包不存在,但事實上install pandas時,numpy必定是已經裝過的,所以就到處找,應該是環境沒有設定

4. python環境設定

除了上述設定後,在**中顯示的指定python的環境,例如

# test.py #

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import os

from pyspark import sparkcontext

os.environ['pyspark_python'] = './py35/bin/python'

def fun(x):

import pandas

return pandas.__version__

a = sc.parallelize([1,4,5,5,6],3)

print(a.map(lambda x:fun(x)).collect())

也可以在submit的命令中設定這些路徑

spark.yarn.dist.archives=hdfs://***/***/***/env/py35.zip#py35\

--conf spark.pyspark.python=./py35/bin/python \

--conf spark.executorenv.pyspark_python=./py35/bin/python \

--conf spark.executorenv.ld_library_path=/anacondainstall/anaconda3/lib \

如果報libffi.so.6不存在,則加入最後乙個conf。 

參考:

python 建立自定義評估指標

建立自定義評估指標 函式 from sklearn.metrics import make scorer,r2 score from sklearn.model selection import train test split from sklearn.linear model import ri...

PHP自定義環境

php環境分為兩種 wanmp lanmp w windows 系統 l linux 系統 a apache 伺服器 n nginx 伺服器 m mysql 資料庫 p php 伺服器端的指令碼語言 安裝環境分為兩種 整合環境 一鍵安裝 整合環境 phpstudy wampserver apmser...

建立自定義控制項

在前一篇文章中 中,我將乙個公共視窗控制項進行了之類劃分,目的是為了修飾其行為或者說是擴充套件其功能。有時候,你只能將公共視窗控制項擴充套件到這樣的底部。我遇到的乙個例子是乙個比較普遍的話題即需要乙個格網控制項並且編輯tabular資料。我對clistctrl進行了之類劃分,並擴充套件使其能夠進行子...