Scala 如何在spark submit中将json格式作为一个参数传递?

Scala 如何在spark submit中将json格式作为一个参数传递?,scala,apache-spark,command-line-arguments,spark-submit,Scala,Apache Spark,Command Line Arguments,Spark Submit,这里的arg(0)是/home/Hadoop Work/application.properties arg(1)是“学生数据库,学生信息表,A类,\”[\“{\”系统\:\“学生信息表{124;学生姓名\“,\“实际\\”:“学生信息表{124;学生电话\“,\”班级实力\“:“50\”]\”,“系A,120” 对象HelloWorld{ def main(参数:数组[字符串]){ val输入=args(1) val splited=input.split(“,”) val dbname=sp

这里的
arg(0)
/home/Hadoop Work/application.properties

arg(1)
“学生数据库,学生信息表,A类,\”[\“{\”系统\:\“学生信息表{124;学生姓名\“,\“实际\\”:“学生信息表{124;学生电话\“,\”班级实力\“:“50\”]\”,“系A,120”

对象HelloWorld{
def main(参数:数组[字符串]){
val输入=args(1)
val splited=input.split(“,”)
val dbname=splited(0)
val tablename=splited(1)
val classname=已拆分(2)
val jsonInputColumns=splited(3)//这里我想要json格式作为一个参数-->“[{system:stud_info_table | student_name,actual:stud_info_table | student_phone,class_strength:50}”
val部门名称=已拆分(4)
val kafka_超时_秒=已拆分(5)
}
}

您的问题是使用逗号分隔符进行拆分,逗号分隔符也存在于json中。解决方法是使用另一个*非通用*分隔符,如

我把你的代码改成了

 spark-submit --class com.HelloWorld \
--master yarn --deploy-mode client \
--executor-memory 5g  /home/Hadoop-Work/HelloWorld.jar \
"/home/Hadoop-Work/application.properties" \
"Student_db,stud_info_table,ClassA,\"[\"{\"system\":\"stud_info_table|student_name\",\"actual\":\"stud_info_table|student_phone\",\"class_strength\":\"50\"}\"]\",DepartmentA,120"

你的论点是:“
”学生数据库;;学生信息表;;ClassA;;”[“{”系统:“:”学生信息表;”学生姓名“,”实际“:”学生信息表;”学生电话“,”班级实力“:”50\”];;部门A;;120”

你试过我建议的解决方案吗?如果它不起作用,您能否指定它不起作用的位置?如果是,您能接受答案以结束问题吗?
input.split(“,”)
正确吗?我认为输入将在
上拆分
  object HelloWorld {

   def main(args: Array[String]){

    val input =args(1)
    val splited = input.split(";;")
    val dbname = splited(0)
    val tablename = splited(1)
    val classname = splited(2)
    val jsonInputColumns = splited(3) // here I want json format as one argument ----> "[{system:stud_info_table|student_name,actual:stud_info_table|student_phone,class_strength:50}]"
    val departmentName = splited(4)
    val kafka_timeout_sec = splited(5)      
    }

   }