2016-12-24 7 views
0

これは私が使用したコードです。Sparkでリクエストモジュールを使用するにはどうしたらいいですか?

from __future__ import print_function 
import sys 
from pyspark.sql import SparkSession 
import sys 
sys.path.append('/usr/local/lib/python2.7/site-packages') 
import requests 

if __name__ == "__main__": 
    s = Session() 
    toGet = s.get 

    spark = SparkSession\ 
     .builder\ 
     .appName("PythonDockerRepoStat")\ 
     .getOrCreate() 

    lines = spark.read.text('/data/urls.txt').rdd.map(lambda r: r[0]) 
    res = lines.flatMap(lambda x: x.split("\n"))\ 
     .map(lambda x: toGet(x)) 
    output = res.collect() 
    print(output) 

しかし、私はこのエラーを得た:はImportErrorを:いいえモジュールの名前requests.sessions

+0

pysparkシェルと 'import requests'を起動します。うまくいくでしょう。 – MYGz

答えて

1

すべての依存関係がためにアクセスできるようにする必要がありスパークジョブ起動:

  • ドライバインタプリタを。実行者インタプリタ。

拡張パス:

sys.path.append('/usr/local/lib/python2.7/site-packages') 

は、ローカルドライバインタプリタに影響を与えます。あなたができるエグゼキュータの環境変数を設定するには:

  • $SPARK_HOME/conf/spark-defaults.confの編集やSparkConfキーを対応する設定することにより、例えば$SPARK_HOME/conf/spark-env.sh
  • 使用spark.executorEnv.[EnvironmentVariableName]設定オプションを(変更

同時に、あなたはそれを確認する必要があります。 requestsはすべてのワーカーノード(ローカル/擬似分散モードを使用していない場合)にインストール/アクセスできます。

+0

私は試しませんでしたが、意味があります。 –

+1

これで動作します。ありがとうございました。 –

+0

@ Victor.Li答えを受け入れることを検討しますか?ありがとう! :) – user7337271

関連する問題