1

次の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 クエリのように複数のパラメーターを渡すことです。提出した jar を簡単に処理するための json 形式。

私は正しい道を進んでいますか、それとも別の道がありますか?

4

2 に答える 2

1

input.string は予約済みのキーワードではありません。実際、パラメーターには任意の名前を付けることができます。たとえば、foo.string と foo.number という 2 つのパラメーターを POST するとします。次に、次のように 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) には、JSON をエスケープするのに非常に役立つクラス StringEscapeUtils が付属しています。

次のように、SparkJobServer ジョブに渡す必要がある Scala アプリケーションからの入力をエスケープするために使用します。

input.schema=\"" + StringEscapeUtils.escapeJson(referenceSchema)+"\""

referenceSchema は JSON ドキュメントです (私の場合は JSON 配列)

input.schema は、Scala からの HTTP 投稿の本文にある多くのコンマ区切りパラメーターの 1 つです...

于 2016-12-05T14:14:59.413 に答える