【问题标题】:How to check the Spark version如何查看 Spark 版本
【发布时间】:2015-04-17 03:52:26
【问题描述】:

如题,我怎么知道 CentOS 安装了哪个版本的 spark?

当前系统已经安装了cdh5.1.0。

【问题讨论】:

    标签: apache-spark cloudera-cdh


    【解决方案1】:

    如果您使用 Spark-Shell,它会出现在开头的横幅中。

    以编程方式,可以使用SparkContext.version

    【讨论】:

    • 嗯.. 我在 python shell 中得到<property object at 0x7f8d2afb2998>
    • @PikoMonde version 是 SparkContext 类的一个属性,因此您只需在该类的 instance 上调用它。
    • 是的,我才意识到这一点。我认为,对于像我这样不熟悉 python 和 spark 的人来说,完整的代码(以编程方式)很有帮助。这里我写了完整的代码below
    【解决方案2】:

    打开 Spark shell 终端,运行 sc.version

    【讨论】:

      【解决方案3】:

      您可以使用 spark-submit 命令: spark-submit --version

      【讨论】:

        【解决方案4】:

        在 Spark 2.x 程序/shell 中,

        使用

        spark.version   
        

        其中spark 变量属于SparkSession 对象

        使用spark-shell开头的控制台日志

        [root@bdhost001 ~]$ spark-shell
        Setting the default log level to "WARN".
        To adjust logging level use sc.setLogLevel(newLevel).
        Welcome to
              ____              __
             / __/__  ___ _____/ /__
            _\ \/ _ \/ _ `/ __/  '_/
           /___/ .__/\_,_/_/ /_/\_\   version 2.2.0
              /_/
        

        无需进入code/shell

        spark-shell --version

        [root@bdhost001 ~]$ spark-shell --version
        Welcome to
              ____              __
             / __/__  ___ _____/ /__
            _\ \/ _ \/ _ `/ __/  '_/
           /___/ .__/\_,_/_/ /_/\_\   version 2.2.0
              /_/
                                
        Type --help for more information.
        

        spark-submit --version

        [root@bdhost001 ~]$ spark-submit --version
        Welcome to
              ____              __
             / __/__  ___ _____/ /__
            _\ \/ _ \/ _ `/ __/  '_/
           /___/ .__/\_,_/_/ /_/\_\   version 2.2.0
              /_/
                                
        Type --help for more information.
        

        【讨论】:

        • 有时会是spark2-shell --versionspark2-submit --version
        【解决方案5】:

        如果您正在使用 Databricks 并与笔记本交谈,只需运行:

        spark.version
        

        【讨论】:

          【解决方案6】:

          如果您使用的是 pyspark,可以在粗体 Spark 徽标旁边看到正在使用的 spark 版本,如下所示:

          manoj@hadoop-host:~$ pyspark
          Python 2.7.6 (default, Jun 22 2015, 17:58:13)
          [GCC 4.8.2] on linux2
          Type "help", "copyright", "credits" or "license" for more information.
          Setting default log level to "WARN".
          To adjust logging level use sc.setLogLevel(newLevel).
          
          Welcome to
                ____              __
               / __/__  ___ _____/ /__
              _\ \/ _ \/ _ `/ __/  '_/
             /__ / .__/\_,_/_/ /_/\_\   version 1.6.0
                /_/
          
          Using Python version 2.7.6 (default, Jun 22 2015 17:58:13)
          SparkContext available as sc, HiveContext available as sqlContext.
          >>>
          

          如果要显式获取 spark 版本,可以使用 SparkContext 的 version 方法,如下所示:

          >>>
          >>> sc.version
          u'1.6.0'
          >>>
          

          【讨论】:

            【解决方案7】:

            您使用 spark-shell 或 pyspark 的哪个 shell 命令,它将落在 Spark 徽标上,旁边有一个版本名称。

            $ pyspark
            $ Python 2.6.6(r266:84292,2015 年 5 月 22 日,08:34:51) [GCC 4.4.7 20120313 (Red Hat 4.4.7-15)] 在 linux2 上 ………… ............ 欢迎来到
            1.3.0版

            【讨论】:

              【解决方案8】:

              使用下方获取 spark 版本

              spark-submit --version
              

              【讨论】:

                【解决方案9】:

                如果您想以编程方式打印版本,请使用

                 from pyspark.sql import SparkSession 
                
                 spark = SparkSession.builder.master("local").getOrCreate() 
                 print(spark.sparkContext.version)
                

                【讨论】:

                  【解决方案10】:

                  如果您使用的是 Zeppelin 笔记本,您可以运行:

                  sc.version 
                  

                  要知道你可以运行的 scala 版本:

                  util.Properties.versionString
                  

                  【讨论】:

                    【解决方案11】:

                    如果您想使用python 脚本以编程方式运行它

                    你可以使用这个script.py:

                    from pyspark.context import SparkContext
                    from pyspark import SQLContext, SparkConf
                    
                    sc_conf = SparkConf()
                    sc = SparkContext(conf=sc_conf)
                    print(sc.version)
                    

                    使用python script.pypython3 script.py 运行它


                    上述脚本也适用于 python shell。


                    直接在 python 脚本上使用print(sc.version) 将不起作用。如果直接运行会报这个错误:NameError: name 'sc' is not defined

                    【讨论】:

                    • 这应该是sc = SparkContext.getOrCreate(conf=sc_conf)不是这样的:sc = SparkContext(conf=sc_conf)!
                    【解决方案12】:

                    这里的大部分答案都需要初始化一个 sparksession。这个答案提供了一种从库中静态推断版本的方法。

                    ammonites@ org.apache.spark.SPARK_VERSION
                    res4: String = "2.4.5"
                    

                    【讨论】:

                    • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
                    【解决方案13】:

                    如果像我一样,在 docker 容器中运行 spark 并且对 spark-shell 几乎没有任何手段,可以运行 jupyter notebook,在 jupyter notebook 中构建名为 scSparkContext 对象,并将版本称为如下代码所示:

                    docker run -p 8888:8888 jupyter/pyspark-notebook ##in the shell where docker is installed
                    
                    import pyspark
                    sc = pyspark.SparkContext('local[*]')
                    sc.version
                    
                    

                    【讨论】:

                      【解决方案14】:

                      试试这个方法:

                      import util.Properties.versionString
                      import org.apache.spark.sql.SparkSession
                      
                      val spark = SparkSession
                        .builder
                        .appName("my_app")
                        .master("local[6]")
                        .getOrCreate()
                      println("Spark Version: " + spark.version)
                      println("Scala Version: " + versionString)
                      

                      【讨论】:

                        【解决方案15】:

                        为了在 shell 上打印 Spark 的版本,请执行以下解决方案。

                        SPARK_VERSION=$(spark-shell --version &> tmp.data ; grep version tmp.data | head -1 | awk '{print $NF}';rm tmp.data)
                        echo $SPARK_VERSION
                        

                        【讨论】:

                          【解决方案16】:

                          非交互式方式,我用于 AWS EMR 正确的 PySpark 版本安装:

                          # pip3 install pyspark==$(spark-submit --version 2>&1| grep -m 1  -Eo "([0-9]{1,}\.)+[0-9]{1,}") 
                          Collecting pyspark==2.4.4
                          

                          解决方案:

                          #  spark-shell --version 2>&1| grep -m 1  -Eo "([0-9]{1,}\.)+[0-9]{1,}"
                          2.4.4
                          

                          解决方案:

                          # spark-submit --version 2>&1| grep -m 1  -Eo "([0-9]{1,}\.)+[0-9]{1,}"
                          2.4.4
                          

                          【讨论】:

                          • 它使用 grep 和管道,而非其他答案是使用非交互式方法而不将输出缓存在文件中。有示例如何将其与 pip install 一起使用
                          猜你喜欢
                          • 2011-03-21
                          • 2020-10-25
                          • 2011-04-18
                          • 2012-01-17
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多