2014-01-09 26 views
0

我試圖從一個Azure SQL數據庫與Hadoop(HDInsight)使用數據。Azure HDInsight參數被錯誤引用

獲取數據和執行工作,我運行一個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://[email protected]/Input/" + Job_ID + "/"; 

     var sqoopJob = new SqoopJobCreateParameters() 
     { 
      Command = query, 
      StatusFolder = "asv://[email protected]/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')工作,但作業不產生任何輸出
  • 使用@和雙引號不起作用
  • 這個問題似乎類似於Double Quotes in Hadoop Hive Query,但答案(指定作業名)並沒有幫助

所以問題:爲什麼在查詢中空間導致此錯誤?

在此先感謝您的幫助

回答

0

您可以將命令保存爲使用 - 文件參數文件,並點了。這將避免編碼問題。

+0

對不起,對於遲到的答案。仍然有一些問題,但終於奏效了,但我仍然想知道是什麼導致了編碼問題。 –