Параметр Azure HDInsight указан неправильно.

Я пытаюсь использовать данные из базы данных 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, но ответ ( указание имени задания) не помогло

Итак, вопрос: почему пробелы в запросе вызывают эту ошибку?

Заранее спасибо за вашу помощь


person Simon Buechel    schedule 09.01.2014    source источник


Ответы (1)


Вы можете сохранить свою команду в виде файла и указать на нее, используя параметр -File. Это позволит избежать проблем с кодировкой.

person maxiluk    schedule 10.01.2014
comment
Извините за столь поздний ответ. Были еще некоторые проблемы, но это, наконец, сработало, но мне все еще интересно, что вообще вызвало проблемы с кодировкой. - person Simon Buechel; 14.01.2014