在 Spark 作业服务器中。如何在 input.string 上传递 json 格式的字符串?
In Spark JobServer. How to pass a json formated string on the input.string?
我正在尝试对 运行 个作业执行以下 curl 命令:
curl -k --basic --user 'user:psw' -d 'input.string= {"user":13}' 'https://localhost:8090/jobs?appName=test&classPath=test.ImportCSVFiles&context=import&sync=true'
但我收到以下错误:
"com.typesafe.config.ConfigException$WrongType: String: 1: input.string has type OBJECT rather than STRING"
我的想法是像 sql 查询一样传递多个参数。 json 格式,便于处理我提交的 jar。
我的方法是对的还是有别的方法?
input.string 不是保留关键字——实际上,您可以任意命名参数。比方说,你 POST 两个参数 foo.string 和 foo.number。然后您读取 SJS 作业中的参数,如下所示:
// run is the starting point of a SJS job (also see validate function)
override def runJob(sc: SparkContext, config: Config): Any = {
val cmd = config.getString("input.cmd")
val fooString = config.getString("foo.bar")
val fooNum = config.getInt("foo.number")
以防万一您计划从 Scala/Java:
执行 SJS 作业
Apache Commons Lang (org.apache.commons.lang3) 附带了一个非常有用的 class 转义 JSON:StringEscapeUtils
我用它来转义我需要传递给 SparkJobServer 作业的 Scala 应用程序的输入,如下所示:
input.schema=\"" + StringEscapeUtils.escapeJson(referenceSchema)+"\""
referenceSchema 是一个 JSON 文档(在我的例子中是一个 JSON 数组)
input.schema 是来自 Scala 的 HTTP post 正文中许多逗号分隔的参数之一...
正在从评论中复制。
问题是 json 因为字符串以大括号“{”开头,所以试图直接将其作为对象而不是字符串来读取。
输入正确'input.string= \"{\"user\":13}\" '
我正在尝试对 运行 个作业执行以下 curl 命令:
curl -k --basic --user 'user:psw' -d 'input.string= {"user":13}' 'https://localhost:8090/jobs?appName=test&classPath=test.ImportCSVFiles&context=import&sync=true'
但我收到以下错误:
"com.typesafe.config.ConfigException$WrongType: String: 1: input.string has type OBJECT rather than STRING"
我的想法是像 sql 查询一样传递多个参数。 json 格式,便于处理我提交的 jar。
我的方法是对的还是有别的方法?
input.string 不是保留关键字——实际上,您可以任意命名参数。比方说,你 POST 两个参数 foo.string 和 foo.number。然后您读取 SJS 作业中的参数,如下所示:
// run is the starting point of a SJS job (also see validate function)
override def runJob(sc: SparkContext, config: Config): Any = {
val cmd = config.getString("input.cmd")
val fooString = config.getString("foo.bar")
val fooNum = config.getInt("foo.number")
以防万一您计划从 Scala/Java:
执行 SJS 作业Apache Commons Lang (org.apache.commons.lang3) 附带了一个非常有用的 class 转义 JSON:StringEscapeUtils
我用它来转义我需要传递给 SparkJobServer 作业的 Scala 应用程序的输入,如下所示:
input.schema=\"" + StringEscapeUtils.escapeJson(referenceSchema)+"\""
referenceSchema 是一个 JSON 文档(在我的例子中是一个 JSON 数组)
input.schema 是来自 Scala 的 HTTP post 正文中许多逗号分隔的参数之一...
正在从评论中复制。
问题是 json 因为字符串以大括号“{”开头,所以试图直接将其作为对象而不是字符串来读取。
输入正确'input.string= \"{\"user\":13}\" '