Azure data factory 如何将数据路径PIPELINE参数从AzureDatafactory传递到AzureMachineLearningExecutePline活动?
我正在尝试从Blob存储中读取文件,加载到pandas并将其写入Blob存储Azure data factory 如何将数据路径PIPELINE参数从AzureDatafactory传递到AzureMachineLearningExecutePline活动?,azure-data-factory,azure-data-factory-2,azure-machine-learning-studio,azure-machine-learning-service,azureml,Azure Data Factory,Azure Data Factory 2,Azure Machine Learning Studio,Azure Machine Learning Service,Azureml,我正在尝试从Blob存储中读取文件,加载到pandas并将其写入Blob存储 我有一个Azure机器学习管道,其中包含一个PythonScriptStep,它接受2个PipelineParameters,数据路径如下所示 从azureml.core导入数据存储 从azureml.data.datapath导入数据路径、数据路径计算绑定、数据引用 从azureml.pipeline.core导入PipelineParameter 数据存储=数据存储(ws,“样本存储”) 在\u原始路径中\u默认
从azureml.core导入数据存储
从azureml.data.datapath导入数据路径、数据路径计算绑定、数据引用
从azureml.pipeline.core导入PipelineParameter
数据存储=数据存储(ws,“样本存储”)
在\u原始路径中\u默认值='somefolder/raw/alerts/2020/08/03/default\u in.csv'
in_cleaned_path_default='somefolder/cleaned/alerts/2020/08/03/default_out.csv'
in_raw_datapath=datapath(datastore=datastore,path_on_datastore=in_raw_path默认值)
in_raw\u path\u pipelineparam=PipelineParameter(name=“inrawpath”,默认值=in_raw\u datapath)
原始数据路径输入=(在原始路径管道参数中,数据路径计算绑定(mode='mount'))
in_cleaned_datapath=datapath(datastore=datastore,path_on_datastore=in_cleaned_path默认值)
in_cleaned_path_pipelineparam=PipelineParameter(name=“incleanedpath”,默认值=in_cleaned_datapath)
已清理的\u数据路径\u输入=(在\u已清理的\u路径\u管道参数中,DataPathComputeBinding(mode='mount'))
从azureml.pipeline.steps导入PythonScriptStep
source\u directory=script\u folder+'/pipeline\u Steps'
dataprep_步骤=PythonScriptStep(
script_name=“SimpleTest.py”,
参数=[“--input_data”,raw_datapath_input,“--cleaned_data”,cleaned_datapath_input],
输入=[原始数据路径输入,清洁数据路径输入],
计算目标=默认计算,
source\u directory=source\u directory,
runconfig=run\u config,
允许重用=真
)
来自azureml.pipeline.core导入管道
管道测试=管道(工作区=ws,步骤=[dataprep\u步骤])
test_raw_path=DataPath(datastore=datastore,path_on_datastore='samplefolder/raw/alerts/2017/05/31/test.csv')
测试_cleaned_path=DataPath(datastore=datastore,path_on_datastore='samplefolder/cleaned/alerts/2020/09/03')
pipeline_run_msalerts=实验(ws,'SampleExperiment')。提交(pipeline_测试,pipeline_参数={“inrawpath”:测试_原始_路径,
“incleanedpath”:测试(路径)```
导入操作系统
导入系统
导入argparse
导入路径库
导入azureml.core
作为pd进口熊猫
parser=argparse.ArgumentParser(“dataprepolly”)
parser.add_参数(“--input_data”,type=str)
add_参数(“--cleaned_data”,type=str)
args=parser.parse_args()
打印(“参数1:%s”%args.input\u数据)
打印(“参数2:%s”%args.u数据)
testDf=pd.read\u csv(args.input\u数据,错误\u错误\u行=False)
打印('总数据形状'+str(testDf.Shape))
如果不是(args.u数据为无):
输出路径=args.cleaned\u数据
makedirs(输出路径,exist\u ok=True)
outdatapath=output_path+'/alert.csv'
testDf.to_csv(outdatapath,index=False)
从AzureDataFactory触发此AzureMLPipeline:通过在AzureMLWorkspace/PipelineSDK中执行ML管道,上述代码可以正常工作。我正在尝试从AzureDataFactory(AzureMachineLearningExecutePline)触发AzureMLpipeline活动,如下所示
通过传递2个字符串输入路径,尝试了如下调试运行
rawdatapath=“samplefolder/raw/alerts/2017/05/31/test.csv”
cleaneddatapath=“samplefolder/raw/cleaned/2020/09/03/” 它显示采用默认路径而不是管道参数(没有这样的文件或目录错误不那么重要,因为主要的一点是采用默认路径而不是管道参数)。我怀疑这是因为将pipelineparameter作为字符串而不是数据路径传递。
最后一个问题是:如何从Azure数据工厂向AzureMLPipelineActivity传递数据路径
谢谢。输入参数似乎定义为字符串,请尝试将其修改为对象数据类型。根据,它需要一个对象 {“键”:“值”}参数 演示了在AML管道中使用
DataPath
和PipelineParameters
。您将了解如何通过PipelineParameters
参数化字符串和DataPath
,并将其提交给AML管道。您可以参数化输入数据集,下面是一个笔记本,演示了如何进行参数化
目前,ParallelRunStep
接受数据集作为数据输入。您可以在ParallelRunStep
之前再添加一个步骤,以创建指向新数据的数据集对象,并传递到ParallelRunStep
。以下是使用多个步骤的示例:
对于输出,如果使用append_row
output操作,则可以通过append_row_file_name
config自定义输出文件名。输出将存储在默认blob中。要将其移动到其他存储,我们建议在ParallelRunStep
之后使用另一个DataTransferStep
。
请按照以下步骤进行数据传输:从Microsoft获得答案(请参阅此线程)。Azure Data Factory产品团队确认,Azure Data Factory(ADF)中目前不支持“DataPath”参数的数据类型。但是,已经针对该功能提出了一个功能,并且正在进行相关工作。此功能将作为11月发布的一部分。Hey@KranthiPakala MSFT,感谢您的回复。请您澄清数据类型必须在哪里?1.“SimpleTest.py”中的参数应该是str还是object?2.Azureml管道是否有任何变化?3.在ADF AzureML管道活动中,尝试将路径作为对象传递,但AzureML管道仍然选择默认值而不是传递的参数。我应该使用getmetada活动来创建对象还是仅创建一个对象
Current directory: /mnt/batch/tasks/shared/LS_root/jobs/myazuremlworkspace/azureml/d8ee11ea-5838-46e5-a8ce-da2fbff5aade/mounts/workspaceblobstore/azureml/d8ee11ea-5838-46e5-a8ce-da2fbff5aade
Preparing to call script [ SimpleTest.py ]
with arguments:
['--input_data', '/mnt/batch/tasks/shared/LS_root/jobs/myazuremlworkspace/azureml/d8ee11ea-5838-46e5-a8ce-da2fbff5aade/mounts/SampleStore/somefolder/raw/alerts/2020/08/03/default_in.csv',
'--cleaned_data', '/mnt/batch/tasks/shared/LS_root/jobs/myazuremlworkspace/azureml/d8ee11ea-5838-46e5-a8ce-da2fbff5aade/mounts/SampleStore/somefolder/cleaned/alerts/2020/08/03/default_out.csv']
After variable expansion, calling script [ SimpleTest.py ] with arguments:
['--input_data', '/mnt/batch/tasks/shared/LS_root/jobs/myazuremlworkspace/azureml/d8ee11ea-5838-46e5-a8ce-da2fbff5aade/mounts/SampleStore/somefolder/raw/alerts/2020/08/03/default_in.csv',
'--cleaned_data', '/mnt/batch/tasks/shared/LS_root/jobs/myazuremlworkspace/azureml/d8ee11ea-5838-46e5-a8ce-da2fbff5aade/mounts/SampleStore/somefolder/cleaned/alerts/2020/08/03/default_out.csv']
Script type = None
Argument 1: /mnt/batch/tasks/shared/LS_root/jobs/myazuremlworkspace/azureml/d8ee11ea-5838-46e5-a8ce-da2fbff5aade/mounts/SampleStore/somefolder/raw/alerts/2020/08/03/default_in.csv
Argument 2: /mnt/batch/tasks/shared/LS_root/jobs/myazuremlworkspace/azureml/d8ee11ea-5838-46e5-a8ce-da2fbff5aade/mounts/SampleStore/somefolder/cleaned/alerts/2020/08/03/default_out.csv
.......................
FileNotFoundError: [Errno 2] No such file or directory: '/mnt/batch/tasks/shared/LS_root/jobs/myazuremlworkspace/azureml/d8ee11ea-5838-46e5-a8ce-da2fbff5aade/mounts/SampleStore/somefolder/raw/alerts/2020/08/03/default_in.csv'