【问题标题】:Why do I see multiple spark installations directories?为什么我会看到多个 spark 安装目录?
【发布时间】:2020-10-13 16:32:34
【问题描述】:

我正在使用安装了 spark 的 ubuntu 服务器。

我没有对该服务器的 sudo 访问权限。

所以在我的目录下,我创建了一个新的virtual environment,并在其中安装了pyspark

当我输入以下命令时

whereis spark-shell   #see below


/opt/spark-2.4.4-bin-hadoop2.7/bin/spark-shell2.cmd /opt/spark-2.4.4-bin-hadoop2.7/bin/spark-shell.cmd /opt/spark-2.4.4-bin-hadoop2.7/bin/spark-shell /home/abcd/.pyenv/shims/spark-shell2.cmd /home/abcd/.pyenv/shims/spark-shell.cmd /home/abcd/.pyenv/shims/spark-shell

另一个命令

echo 'sc.getConf.get("spark.home")' | spark-shell

scala> sc.getConf.get("spark.home")
res0: String = /home/abcd/.pyenv/versions/bio/lib/python3.7/site-packages/pyspark

q1) 我是否使用正确的命令找到了spark的安装目录?

q2) 可以帮助我理解为什么我会看到 3 opt paths3 pyenv paths

【问题讨论】:

    标签: python scala apache-spark pyspark apache-spark-sql


    【解决方案1】:

    spark 安装(如您在/opt/spark-2.4.4-bin-hadoop2.7 中的那个)通常附带一个 pyspark 安装。您可以通过下载并解压缩此 tarball (https://www.apache.org/dyn/closer.lua/spark/spark-2.4.6/spark-2.4.6-bin-hadoop2.7.tgz) 来检查这一点。

    如果您在虚拟环境中安装 pyspark,您将安装另一个 pyspark 实例,该实例没有 Scala 源代码,但带有已编译的 spark 代码作为 jars(请参阅 pyspark 安装中的 jars 文件夹)。 pyspark 是 spark 的包装器(用 Scala 编写)。这可能就是您在/home/abcd/.pyenv/shims/ 中看到的内容。

    同一目录下的脚本spark-shell2.cmdspark-shell.cmd 是同一个spark 安装的一部分。这些是文本文件,您可以cat 他们。您将看到spark-shell.cmd 在其中调用spark-shell2.cmd。您的/opt/spark-2.4.4-bin-hadoop2.7/bin/ 文件夹中可能会有更多脚本,所有这些都是同一个 spark 安装的一部分。文件夹/home/abcd/.pyenv/shims/ 也是如此。最后,/home/abcd/.pyenv/versions/bio/lib/python3.7/site-packages/pyspark 似乎又是一个 pyspark 安装。

    您使用哪个pyspark 安装并不重要。为了使用 spark,需要创建一个运行 Scala/Java 代码的 java 进程(来自安装中的 jars)。

    通常,当您运行这样的命令时

    # Python code
    spark = SparkSession.builder.appName('myappname').getOrCreate() 
    

    然后创建一个运行 spark 的新 java 进程。

    如果您运行脚本/opt/spark-2.4.4-bin-hadoop2.7/bin/pyspark,那么您还将创建一个新的 java 进程。

    您可以使用以下内容检查是否确实存在这样的 java 进程:ps aux | grep "java"

    【讨论】:

    • 一个简单的问题。当我在/opt/目录下安装了spark后,为什么我的第一个命令输出也显示了虚拟环境spark-shell2.cmdspark-shell.cmdspark-shell2
    • 是的,我确实在虚拟环境中安装了pyspark,但我不应该只看到这个/home/abcd/.pyenv/versions/bio/lib/python3.7/site-packages/pyspark吗?但是为什么spark-sheel.cmd2
    • 第一个命令和第二个命令有什么区别?为什么第二个命令只给出pyspark 安装路径?可以帮帮我吗?
    • whereis spark-shell 只是在您的磁盘上搜索与spark-shell 模式匹配的所有文件。这与搜索文件/文件夹名称(例如,music-folder)没有什么不同。 sc.getConf.get("spark.home") 显示了用于在 python 程序中创建 spark 会话的特定 spark 安装。
    • 嗨 Ankur,我有另一个相关的帖子。如果你有时间,你能帮我解决这个问题吗? stackoverflow.com/questions/63883142/…
    猜你喜欢
    • 1970-01-01
    • 2013-11-18
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多