【问题标题】:Get hive and hadoop version from within pyspark session从 pyspark 会话中获取 hive 和 hadoop 版本
【发布时间】:2025-12-14 09:05:01
【问题描述】:

我在带有 hive 的 hadoop 集群上使用 pyspark。我知道可以从命令行(spark-submit --versionhive --versionhadoop version)获取 spark、hive 和 hadoop 版本,但我如何在 pyspark 中做同样的事情?

获取 spark 版本很容易:

print("Spark version = ".format(spark._sc.version))

我不知道如何获得 hive 和 hadoop 版本。有人知道吗? TIA

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    从 pyspark 获取它们:

    # spark
    print(f"Spark version = {spark.version}")
    
    # hadoop
    print(f"Hadoop version = {sc._jvm.org.apache.hadoop.util.VersionInfo.getVersion()}")
    

    【讨论】:

    • 很好,谢谢。 Hive 无法以类似方式使用?
    • (顺便说一句,还是要支持py2,所以不使用fstrings)
    • @jamiet 我认为 Hive 没有这样的配置。但也许您可以尝试通过 spark 进行 SQL 查询(在启用 hive 之后),如下所示:spark.sql("select version();").show()
    • print(f"Hadoop version = {spark._sc._jvm.org.apache.hadoop.util.VersionInfo.getVersion()}") 这个也适用于hadoop版本
    【解决方案2】:

    好的,我通过这样做解决了它:

    from sh import hive, hadoop
    print("Hive version = {0}".format(hive("--version")))
    print("Hadoop version = {0}".format(hadoop("version")))
    

    如果有一种方法可以从 spark 对象中获取它而无需掏空,那就太好了。如果有人知道方法,请告诉我。

    【讨论】: