Python 为什么我会看到多个spark安装目录?

Python 为什么我会看到多个spark安装目录?,python,scala,apache-spark,pyspark,apache-spark-sql,Python,Scala,Apache Spark,Pyspark,Apache Spark Sql,我正在一台ubuntu服务器上工作,它安装了spark 我没有此服务器的sudo访问权限 因此,在我的目录下,我创建了一个新的虚拟环境,在那里我安装了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-bi

我正在一台ubuntu服务器上工作,它安装了
spark

我没有此服务器的sudo访问权限

因此,在我的目录下,我创建了一个新的
虚拟环境
,在那里我安装了
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路径
3个pyenv路径

spark安装(就像您在
/opt/spark-2.4.4-bin-hadoop2.7
中看到的那样)通常都带有pyspark安装。您可以通过下载并提取这个tarball()来检查这一点

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

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

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

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

#Python代码
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.cmd
spark-shell2
spark-shell2
?是的,我在虚拟环境中安装了
pyspark
,但我不应该只看到这个
/home/abcd/.pyenv/versions/bio/lib/python3.7/site packages/pyspark
?但是为什么
spark sheel.cmd2
etc第一个命令和第二个命令之间有什么区别?为什么第二个命令只给出
pyspark
安装路径?能帮我一下吗?
sparkshell在哪里
只是在您的磁盘上搜索与模式匹配的所有文件
sparkshell
。这与搜索文件/文件夹名没有什么不同,比如说,
音乐文件夹
sc.getConf.get(“spark.home”)
显示了用于在python程序中创建spark会话的特定spark安装。嗨,Ankur,我有另一篇相关文章。如果你有时间,你能帮我吗?