簡體   English   中英

將自定義 python 庫路徑添加到 Pyspark

[英]Add custom python library path to Pyspark

在我的 hadoop 集群中,他們在 python 默認路徑以外的其他路徑中安裝了 anaconda 包。 當我嘗試在 pyspark 中訪問 numpy 時出現以下錯誤

導入錯誤:沒有名為 numpy 的模塊

我正在使用 oozie 調用 pyspark。

我試圖在下面的方法中給出這個自定義的 python 庫路徑

使用 oozie 標簽

<property>
  <name>oozie.launcher.mapreduce.map.env</name>
  <value>PYSPARK_PYTHON=/var/opt/teradata/anaconda2/bin/python2.7</value>
</property>

使用 spark 選項標簽

<spark-opts>spark.yarn.appMasterEnv.PYSPARK_PYTHON=/var/opt/teradata/anaconda2/bin/python2.7 --conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=/var/opt/teradata/anaconda2/bin/python2.7 --conf spark.pyspark.python=/var/opt/teradata/anaconda2/bin/python2.7 --conf spark.pyspark.driver.python=/var/opt/teradata/anaconda2/bin/python2.7</spark-opts>

什么都行不通。

當我運行普通的 python 腳本時,它工作正常。 問題傳遞給 pyspark

即使我在 pyspark 標題中也給出了這個

#! /usr/bin/env /var/opt/teradata/anaconda2/bin/python2.7

當我在我的 pyspark 代碼中打印 sys.path 時,它仍然給我低於默認路徑

​[ '/usr/lib/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/local/lib64/python2.7/site-packages', '/usr/local/lib/python2.7/site-packages', '/usr/lib/python2.7/site-packages']​

我有同樣的問題。 就我而言,似乎 ml 類(例如 Vector)在幕后調用 numpy,但並未在標准安裝位置查找它。 即使在集群的所有節點上都安裝了 Python2 和 Python3 版本的 numpy,PySpark 仍然抱怨找不到它。

我已經嘗試了很多沒有奏效的建議。

建議的兩件事我還沒有嘗試過:

1)使用 bashrc 為 PySpark 運行的用戶(對我來說是 ubuntu)來設置首選的 python 路徑。 在所有節點上執行此操作。

2) 讓 PySpark 腳本嘗試安裝有問題的模塊作為其功能的一部分(例如,通過 shell 輸出到 pip/pip3)。

我會在這里保持關注,如果我找到答案,我會發布它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM