在运行Spark作业时获取Spark提交的参数

时间:2016-07-07 02:49:11

标签: apache-spark log4j

我正在通过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..")}

}

我的火花提交是这样的:     /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("文件&#34)

但它给了我一个例外

任何人都可以给我一个解决方案吗?

1 个答案:

答案 0 :(得分:0)

文件的正确密钥是spark.files

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

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

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

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