Я пытаюсь использовать данные из базы данных SQL Azure с помощью Hadoop (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') работают, но задание не производит никакого вывода
- Использование @ и двойных кавычек не работает
- Проблема похожа на двойные кавычки в Hadoop Hive Query, но ответ ( указание имени задания) не помогло
Итак, вопрос: почему пробелы в запросе вызывают эту ошибку?
Заранее спасибо за вашу помощь