【问题标题】:PYSPARK_PYTHON setup in jupyter notebooks is ignored忽略 jupyter 笔记本中的 PYSPARK_PYTHON 设置
【发布时间】:2021-08-05 02:17:48
【问题描述】:

我一直在尝试从 juputer 笔记本(使用 jupyter 实验室)设置 PYSPARK_PYTHON 以使用特定的 conda env,但我找不到使其工作的方法,我找到了一些使用示例:

import os

os.environ['PYSPARK_PYTHON'] = "<the path>"

但它不起作用所以我也尝试了:

spark = pyspark.sql.SparkSession.builder \
       .master("yarn-client") \
       .appName(session_name) \
       .config("spark.yarn.appMasterEnv.PYSPARK_PYTHON","<the path>") \
       .enableHiveSupport() \
       .getOrCreate(cluster=cluster)

sc = spark.sparkContext
sqlContext = SQLContext(sc)

但它从不使用指定路径中的指定python版本 ,问题是,配置是否可能被忽略?还需要在笔记本上做些什么吗?

我正在使用 yarn-client 模式,并且我正在使用 jupyter lab 的企业/企业实例,因此我无法使用 export 在 cli 上设置变量,因为服务器由另一个团队为公司广泛管理,所以我需要在 jupyter 启动期间使用与在 cli 中导出不同的东西来执行此操作。

【问题讨论】:

  • 你能分享一下你是如何连接 Jupyter 和 PySpark 的吗?以及如何启动 Jupyter 服务器?
  • jupyter 和 pyspark 之间的连接是使用我发布的代码完成的: spark = pyspark.sql.SparkSession.builder \ .master("yarn-client") \ .appName(session_name) \ .config ("spark.yarn.appMasterEnv.PYSPARK_PYTHON","") \ .enableHiveSupport() \ .getOrCreate(cluster=cluster) sc = spark.sparkContext sqlContext = SQLContext(sc) 我不确定jupyter是如何由于我使用由另一个团队维护的公司服务器(我只是它的用户),服务器已启动,服务器的启动方法是否会受到影响?
  • 可能。测试它是否有任何影响的一种方法是创建一个新笔记本,如果需要,选择 Spark 内核。在其中只运行一个单元格spark。这是为了在 Jupyter 内核启动时测试 spark session 是否已经初始化。你介意测试一下并告诉我进展如何吗?
  • 好的,感谢您的帮助,我运行了它,我怀疑我的名字'spark'没有定义

标签: python pyspark jupyter-notebook


【解决方案1】:

要使其正常工作,您还应该将这些参数传递给 cli:

export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

另一种方法是安装findspark包:

import findspark
findspark.init()

import pyspark

希望它会有所帮助: https://www.sicara.ai/blog/2017-05-02-get-started-pyspark-jupyter-notebook-3-minutes

【讨论】:

  • 我无法在 cli 上运行导出,因为我使用的是公司 jupyter 服务器,我没有在本地启动它,这就是为什么我需要一种从笔记本代码中执行此操作的方法。
  • 没问题,设置成os.environ["PYSPARK_DRIVER_PYTHON"] = "jupyter"等就行了
  • 其实你可以在jupyter中使用!运行任何cli命令 例如:! pip install findspark
  • 非常感谢您的帮助,但我认为您还没有完全理解这个问题,问题是通过 os.environ 运行 conf 似乎没有效果(它被忽略了),但我不能在 cli 或任何其他 cli 命令上使用 export,因为它是公司服务器,即使使用 !或者魔术命令由于相同的原因不起作用,spark 工作(所以 findspark 在这里没有用)我需要做的是指定一个特定的 conda 环境以在工作节点中运行。
猜你喜欢
  • 1970-01-01
  • 2020-08-26
  • 1970-01-01
  • 2018-09-04
  • 2021-08-31
  • 2018-06-25
  • 2023-04-09
  • 2020-12-26
  • 1970-01-01
相关资源
最近更新 更多