Как распаковать и выполнить задание пакетной службы в составе фабрики данных Azure - PullRequest
1 голос
/ 05 мая 2019

Фабрика данных Azure может выполнять пользовательские действия в качестве заданий пакетного обслуживания.Эти задания могут запускаться из .exe (и связанных с ним зависимостей) в учетной записи хранения, которая копируется до выполнения.

Существует ограничение на файлы в учетной записи хранения, которые можно использовать:

Общий размер файла ресурсов не может превышать 32768 символов

Решение заключается в том, чтобы сжать файлы в учетной записи хранения и разархивировать как часть команды. В этом посте предлагается выполнить команду пакетной службы в фабрике данных Azure как:

Unzip.exe [myZipFilename] && MyExeName.exe [cmdLineArgs]

Запуск этого локально на компьютере с Windows 10 работает нормально.Установка этого параметра в качестве параметра «Command» в настраиваемом действии пакетной службы (с использованием пула образов ОС Windows Server 2019 в облачных службах) приводит к:

Внимание: имя файла не совпадает: &&

Такое ощущение, что я что-то упускаю из виду, но я пробовал разные варианты и не могу заставить его работать.

Ответы [ 2 ]

3 голосов
/ 06 мая 2019

Делясь несколькими возможностями, которые могут возникнуть, я согласен, что чего-то не хватает, если вы хотите поделиться точной командной строкой, которую вы пытаетесь, то не стесняйтесь поделиться.

Несколько идей, которые могут быть причиной такого поведения:

  • Пожалуйста, попробуйте свою командную строку в кавычках с точки зрения партии, как: cmd /c "Unzip.exe [myZipFilename] && MyExeName.exe [cmdLineArgs]"

  • Убедитесь, что ваш файл существует, т. Е. Одна возможность: в конце команда пытается запустить пустую строку с && i.e. cmd /c "unzip.exe "empty" && ...

Надеюсь, что одно из 2 исправлений приведено выше, или не стесняйтесь добавлять больше деталей. Et. и др.

2 голосов
/ 08 мая 2019

Без полного знания контекста, в котором ADF запускает настраиваемые команды действий на узле пакетной службы Windows, я изменил свою настройку, чтобы не ожидать, что Unzip.exe будет существовать (чего, скорее всего, нет при работе под cmd /c "Unzip.exe", а не простоUnzip.exe в качестве команды).

Теперь содержимое моей учетной записи хранения, поддерживающее пользовательское действие, имеет:

  • executetable.zip (мое приложение .NET Core Console, опубликованное для окон со всеми зависимостями))
  • unzip.exe (взят из Git Bash на моем локальном компьютере)
    • , включая зависимости msys-2.0.dll и msys-bz2-1.dll

Тогда команда в АПД:

cmd /c "Unzip.exe executable-with-deps.zip && executable.exe"
...