在 运行 个任务之前解压缩输入文件
Unziping input files before running tasks
我希望能够在 运行 任务之前解压缩输入文件,以减少批处理过程中的数据传输。为此,我将以下命令行添加到我的 JobPreparationTask 中:
CommandLine = "/bin/bash -c 'DEBIAN_FRONTEND=noninteractive apt-get install -y unzip; unzip $AZ_BATCH_TASK_WORKING_DIR//myInput.zip'"
但是我没有查看我的文件所在的任务工作目录 (job/task/wd/myInput.zip) 而是查看作业准备文件夹,我得到以下信息错误:
"cannot find or open /mnt/batch/tasks/workitems/myJob/job-1/jobpreparation/wd//myInput.zip"
我尝试过使用其他环境路径,但我总是遇到类似的错误。 如何访问 job/task/wd 来解压缩文件?
我认为你使用的环境变量是错误的,下面是一些建议以及对你当前方式的回答:
- 在这种情况下,我假设您的 zip 文件是
resourceFiles
的一部分?但是在什么情况下?
- 在此处参考
resource
个文件:https://docs.microsoft.com/en-us/azure/batch/resource-files
特别是在它说的那部分:All types of tasks support resource files: tasks, start tasks, job preparation tasks, job release tasks, etc
所以你的资源文件是在什么情况下上传的?
如果上传发生在 JobPrep
并且当前任务指的是 JobPrep
那么这可能解释了这种行为。
- 如果 Zip 是任务级别资源文件的一部分,那么
cmdline
应该是这些任务的一部分,并且环境变量应该在当前上下文中使用。
如果不是:则确保 zip
是带有 jobPrep
的资源文件的一部分,并相应地使用环境变量。
关于 env var
你为什么不使用:AZ_BATCH_JOB_PREP_WORKING_DIR
或 AZ_BATCH_JOB_PREP_DIR
?
请参阅此处:https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables#environment-variables 这将允许访问您的工作准备目录级别。
额外
想法分享只是为了让您了解并牢记在心,并且仅在满足您的需要时使用。 (仅当您已阅读文章并且它确实适合您的设计场景时才使用它,否则请忽略,上面应该可以解决您的问题):)
- 要处理 zip 文件,请仔细阅读 azure batch 中的应用程序包功能将在后台处理 Zip\unzip。
- https://docs.microsoft.com/en-us/azure/batch/batch-application-packages
- https://docs.microsoft.com/en-us/azure/batch/batch-application-packages#application-packages
An application package is a .zip file that contains the application
binaries and supporting files that are required for your tasks to run
the application. Each application package represents a specific
version of the application.
You can specify application packages at the pool and task levels.
希望这能满足您的需要。 :) 谢谢
我希望能够在 运行 任务之前解压缩输入文件,以减少批处理过程中的数据传输。为此,我将以下命令行添加到我的 JobPreparationTask 中:
CommandLine = "/bin/bash -c 'DEBIAN_FRONTEND=noninteractive apt-get install -y unzip; unzip $AZ_BATCH_TASK_WORKING_DIR//myInput.zip'"
但是我没有查看我的文件所在的任务工作目录 (job/task/wd/myInput.zip) 而是查看作业准备文件夹,我得到以下信息错误:
"cannot find or open /mnt/batch/tasks/workitems/myJob/job-1/jobpreparation/wd//myInput.zip"
我尝试过使用其他环境路径,但我总是遇到类似的错误。 如何访问 job/task/wd 来解压缩文件?
我认为你使用的环境变量是错误的,下面是一些建议以及对你当前方式的回答:
- 在这种情况下,我假设您的 zip 文件是
resourceFiles
的一部分?但是在什么情况下? - 在此处参考
resource
个文件:https://docs.microsoft.com/en-us/azure/batch/resource-files 特别是在它说的那部分:
All types of tasks support resource files: tasks, start tasks, job preparation tasks, job release tasks, etc
所以你的资源文件是在什么情况下上传的?如果上传发生在
JobPrep
并且当前任务指的是JobPrep
那么这可能解释了这种行为。- 如果 Zip 是任务级别资源文件的一部分,那么
cmdline
应该是这些任务的一部分,并且环境变量应该在当前上下文中使用。 如果不是:则确保
zip
是带有jobPrep
的资源文件的一部分,并相应地使用环境变量。关于
env var
你为什么不使用:AZ_BATCH_JOB_PREP_WORKING_DIR
或AZ_BATCH_JOB_PREP_DIR
? 请参阅此处:https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables#environment-variables 这将允许访问您的工作准备目录级别。
额外
想法分享只是为了让您了解并牢记在心,并且仅在满足您的需要时使用。 (仅当您已阅读文章并且它确实适合您的设计场景时才使用它,否则请忽略,上面应该可以解决您的问题):)
- 要处理 zip 文件,请仔细阅读 azure batch 中的应用程序包功能将在后台处理 Zip\unzip。
- https://docs.microsoft.com/en-us/azure/batch/batch-application-packages
- https://docs.microsoft.com/en-us/azure/batch/batch-application-packages#application-packages
An application package is a .zip file that contains the application binaries and supporting files that are required for your tasks to run the application. Each application package represents a specific version of the application.
You can specify application packages at the pool and task levels.
希望这能满足您的需要。 :) 谢谢