【问题标题】:Getting parameters of Spark submit while running a Spark job运行 Spark 作业时获取 Spark 提交的参数
【发布时间】:2016-11-09 06:21:00
【问题描述】:

我正在通过 spark-submit 运行 spark 作业,并使用其 --files 参数加载 log4j.properties 文件。

在我的 Spark 作业中,我需要获取此参数

object LoggerSparkUsage {

def main(args: Array[String]): Unit = {
//DriverHolder.log.info("unspark")
println("args are....."+args.mkString(" "))
val conf = new SparkConf().setAppName("Simple_Application")//.setMaster("local[4]")
val sc = new SparkContext(conf)
 // conf.getExecutorEnv.
val count = sc.parallelize(Array(1, 2, 3)).count()
println("these are files"+conf.get("files"))
LoggerDriver.log.info("log1 for info..")
LoggerDriver.log.info("log2 for infor..")
f2

}
def f2{LoggerDriver.log.info("logs from another function..")}

}

我的 spark 提交是这样的: /opt/mapr/spark/spark-1.6.1/bin/spark-submit --class "LoggerSparkUsage" --master yarn-client --files src/main/resources/log4j.properties /mapr/cellos-mapr/user /mbazarganigilani/SprkHbase/target/scala-2.10/sprkhbase_2.10-1.0.2.jar

我尝试使用 conf.get("文件")

但它给了我一个例外

谁能给我一个解决方案?

【问题讨论】:

    标签: apache-spark log4j


    【解决方案1】:

    文件的正确键是spark.files

    scala.util.Try(sc.getConf.get("spark.files"))
    

    但要获得工作人员的实际路径,您必须使用 SparkFiles:

    org.apache.spark.SparkFiles.get(fileName)
    

    如果这还不够,您可以将这些秒作为应用程序参数传递并从main args 检索或使用spark.conf 中的自定义键。

    【讨论】:

    • 嗨,我需要获取发送给 spark submit ("src/main/resources/log4j.properties") 的确切参数。实际上,当我使用 scala.util.Try(sc.getConf .get("spark.files")) 它给了我一个空值异常。使用第二个命令在集群上的临时目录中给了我一个地址...
    猜你喜欢
    • 2018-05-08
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2016-12-23
    相关资源
    最近更新 更多