Hadoop (HDInsight) で Azure SQL データベースのデータを使用しようとしています。
データを取得してジョブを実行するために、C# コンソール プログラムで次のコードを実行します。
var jobClient = JobSubmissionClientFactory.Connect(creds);
//Setup the sqoop job
string query = "import --connect \"jdbc:sqlserver://...:1433;database=...;user=...;password=...;\" --jobname testname123 --query \"SELECT * FROM HouseDatas WHERE $CONDITIONS\" --split-by ID --target-dir asv://...@....blob.core.windows.net/Input/" + Job_ID + "/";
var sqoopJob = new SqoopJobCreateParameters()
{
Command = query,
StatusFolder = "asv://...@....blob.core.windows.net/Input/sqoop_status/" + Job_ID + "/",
};
エラーメッセージ:
Unhandled Exception: Microsoft.Hadoop.Client.HttpLayerException: Request failed with code: BadRequest
Content:("error":"Passed in parameter is incorrectly quoted: \"SELECT")
at Microsoft.WindowsAzure...
...
注意事項:
- --query パラメータなしで動作します。つまり、単純にテーブル全体を選択した場合
- コマンドは Powershell で実行すると機能します
- クエリにスペースが含まれていない場合 (つまり --query \"SELECT\" )、エラーは発生しませんが、明らかにあまり役に立ちません。
- 一重引用符 (--query 'SELECT ... $Conditions' ) は機能しますが、ジョブは出力を生成しません
- @ と二重引用符の使用が機能しない
- 問題はHadoop Hive Query の Double quotes に似ているようですが、答え (ジョブ名の指定) は役に立ちませんでした
質問: クエリ内のスペースでこのエラーが発生するのはなぜですか?
よろしくお願いいたします。