如何在Spark中使用请求模块?

时间:2016-12-24 03:03:33

标签: python apache-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的模块

1 个答案:

答案 0 :(得分:1)

启动Spark作业时,必须可以访问所有依赖项:

  • 司机翻译。
  • 执行人口译员。

扩展路径:

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

只会影响本地驱动程序解释程序。要设置执行程序环境变量,您可以:

  • 修改$SPARK_HOME/conf/spark-env.sh
  • 使用spark.executorEnv.[EnvironmentVariableName]配置选项(例如,通过修改$SPARK_HOME/conf/spark-defaults.conf或设置相应的SparkConf密钥。

同时,您应确保在每个工作节点上安装/访问requests(如果不使用本地/伪分布式模式)。