我的spark-submit命令:
spark-submit --deploy-mode cluster --class spark_package.import_jar s3://test-system/test.jar "{\"localparameter\" : {\"mail\": \"\", \"clusterid\": \"test\", \"clientCd\": \"1000\", \"processid\": \"1234\"} }"
这里我想将clientCd作为参数传递给我的Scala代码。
我的scala代码:
package Spark_package
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
object SampleFile {
def main(args: Array[String]) {
val spark = SparkSession.builder.master("local[*]").appName("SampleFile").getOrCreate()
val sc = spark.sparkContext
val conf = new SparkConf().setAppName("SampleFile")
val sqlContext = spark.sqlContext
val df = spark.read.format("csv").option("header","true").option("inferSchema","true").load("s3a://test-system/data/*.gz")
df.createOrReplaceTempView("data")
val res = spark.sql("select count(*) from data where client_cd = $clientCd")
res.coalesce(1).write.format("csv").option("header","true").mode("Overwrite").save("s3a://dev-system/bkup/")
spark.stop()
}
}
这里我的问题是如何将clientCd作为参数传递给我的代码。
val res = spark.sql("select count(*) from data where client_cd = $clientCd")
请帮助我。
答案 0 :(得分:0)
在&[T]
的末尾附加所有程序参数,它们将在spark-submit
的{{1}}中可用。
例如args
然后,您可以通过json解组器来解析main
。