JSON аргумент в Spark представить - PullRequest
0 голосов
/ 11 января 2019

Моя команда 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-коду.

Мой скала код:

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")

Пожалуйста, помогите мне в этом.

1 Ответ

0 голосов
/ 11 января 2019

Добавьте все программные аргументы в конце spark-submit, они будут доступны в args в main.

например. spark-submit --class xxx --deploy-mode xxx.jar arg1 arg2

тогда вы можете разобрать ваш arg1 с помощью json unmarshaller.

...