Ошибка: «Не удается выполнить http-запрос» из пользовательской сборки

#azure-data-lake #u-sql

#azure-data-lake #u-sql

Вопрос:

Мое задание Data Lake Analytics загружает пользовательское.СЕТЕВАЯ сборка, которая реализует IExtractor . Этот экстрактор отлично работает, например, когда он просто переставляет данные из текстового файла, но что я действительно хочу сделать, так это извлечь мои входные данные из удаленного API поставщика через HTTP. Поэтому я изменяю свою реализацию экстрактора, чтобы сделать то, что по сути является запросом REST.

Когда я это делаю, я получаю сообщение об ошибке «Невозможно выполнить http-запрос» в моем журнале аналитики. Я полагаю, имеет смысл, что Microsoft ограничивает то, что вы можете и не можете делать в пользовательской сборке в Analytics, но я не нахожу в документации ничего, что прямо говорит: вы не можете отправлять HTTP-запросы в пользовательской сборке.

Итак, мой вопрос состоит из двух частей:

  1. Где документированы ограничения на пользовательские сборки в Azure Data Lake Analytics?
  2. Какой лучший подход к извлечению моих входных данных в задание аналитики, если я обнаружил, что массивные статические входные файлы являются неэлегантным способом получения самых последних данных?

Комментарии:

1. Было бы хорошо знать хороший шаблон для этого, поскольку у нас есть аналогичное требование, например, логическое приложение, запись в хранилище больших двоичных объектов, будет ли это работать?

2. Примерно этим я сейчас и занимаюсь. Очевидно, что я не могу извлекать данные «в реальном времени» из моей исходной службы в U-SQL, поэтому лучше всего, чтобы какой-нибудь внешний процесс захватил все это в виде файла и поместил в хранилище Blob или Data Lake. Это означает, что я не получаю «реального времени», но для моего приложения это нормально.

Ответ №1:

Это ограничение будет задокументировано в предстоящей документации по написанию пользовательских операторов (планируется опубликовать не позднее конца года).

Обычно я упоминаю об этом мимоходом в своих презентациях, но я заметил, что это не указано на слайдах. Я это исправлю :).

Основная причина, по которой мы не разрешаем внешние вызовы, заключается в том, что плохо спроектированный UDO, который масштабируется до большого количества данных, может выглядеть как DDOS для конечной точки REST этой внешней службы, что приведет к ее закрытию или внесению Azure в черный список.

Пожалуйста, сообщите нам, чего вы хотели бы достичь по адресу http://aka.ms/adlfeedback и мы посмотрим, есть ли какие-то возможности, которые мы могли бы добавить, чтобы сделать это возможным без вышеупомянутого недостатка.