【问题标题】:Apache Spark's worker pythonApache Spark 的 worker python
【发布时间】:2021-12-30 18:29:17
【问题描述】:

在 Hadoop 之上的 3 个节点上安装 Apache Spark 后,我遇到了以下问题:
问题 1- Python 版本:
我在工人身上设置 python 时遇到问题。这是 .bashrc 文件中的设置,与 spark-env.sh 文件中的设置相同。

alias python3='/usr/bin/python3'
export PYSPARK_PYTHON=/usr/bin/python3
export PYSPARK_DRIVER_PYTHON=/usr/bin/python3

在 Spark 日志(纱线日志 --applicationId )中,我可以看到一切都按预期进行:

export USER="hadoop"
export LOGNAME="hadoop"
export PYSPARK_PYTHON="python3"

虽然我在主节点和工作节点上安装了 pandas 库(pip install pandas)并确保它已安装,但在使用命令 /home/hadoop/spark/bin/spark-submit --master yarn --deploy-mode cluster sparksql_recommender_system_2.py 时我不断收到以下消息

ModuleNotFoundError: No module named 'pandas' <br>

令人惊讶的是,这个错误只是在集群模式下,而我在客户端部署模式下没有这个错误。

命令which python 返回/usr/bin/python,其中库pandas 存在。 2天后,我在网上找不到我的答案。一次偶然的机会,我尝试使用 sudo 安装 pandas,它成功了 :)。

sudo pip install pandas

但是,我的预期是 Spark 将使用 /usr/bin/python 中的 python 用于 hadoop 用户,而不是 root 用户。我该如何解决?

问题 2-VScode ssh 的不同行为
我使用 VScode ssh 插件连接到我开发代码的服务器。当从一台主机 (PC) 执行此操作时,我可以使用 spark-submit,但在我的另一台 PC 上,我必须使用确切的路径 /home/hadoop/spark/bin/spark-submit。这很奇怪,因为我使用 VSCode ssh 到相同的服务器和文件。知道如何解决吗?

【问题讨论】:

    标签: python apache-spark visual-studio-code


    【解决方案1】:

    这是一个great discussion on how to package items up,以便将您的python环境转移到执行器。

    创建环境

    conda create -y -n pyspark_conda_env -c conda-forge pyarrow pandas conda-pack
    conda activate pyspark_conda_env
    conda pack -f -o pyspark_conda_env.tar.gz
    

    发货:

    export PYSPARK_DRIVER_PYTHON=python # Do not set in cluster modes.
    export PYSPARK_PYTHON=./environment/bin/python
    spark-submit --archives pyspark_conda_env.tar.gz#environment app.py
    

    这确实有每次都必须运送的缺点,但这是最安全、最省事的方法。在每个节点上安装所有东西“更快”,但管理门槛更高,我建议避免这样做。

    说了这么多……离开熊猫。 Pandas 做 python 的事情(小数据)。 Spark Data Frames 做 Spark 的事情(大数据)。我希望这只是一个说明性的例子,你不会使用 Pandas。(这还不错!它只是为小数据制作的,所以将它用于小数据。)如果你“必须”使用它,请查看 Koala's它会进行翻译以允许您向 panda 询问 spark 数据帧的事情。

    【讨论】:

    • 谢谢@Matt-Andruff,我正在学习 Apache Spark,但我仍然不擅长。放弃熊猫的绝妙之处。我不知道考拉图书馆。很好的建议。
    • 如果/当您对这个答案感到满意并且您认为它是答案时,您可以将其标记为答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 2014-08-06
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2017-02-22
    • 2012-01-11
    相关资源
    最近更新 更多