如何在Azure机器学习管道中使用U-SQL脚本生成的结果上运行Python脚本?

如何在Azure机器学习管道中使用U-SQL脚本生成的结果上运行Python脚本?,python,azure-storage,azure-data-lake,u-sql,azure-machine-learning-service,Python,Azure Storage,Azure Data Lake,U Sql,Azure Machine Learning Service,我想处理存储在Azure Data Lake存储(Gen 1)中的大型表,首先运行一个U-SQL脚本,然后运行一个Python脚本,最后输出结果 从概念上讲,这相当简单: 运行.usql脚本从大型初始_表生成中间数据(两个表,intermediate_1和intermediate_2) 在中间数据上运行Python脚本以生成最终结果final Azure机器学习管道应该采取哪些步骤来实现这一点 我认为以下计划会奏效: 使用类似的AdlaStep在adla_compute上运行.usql查询 in

我想处理存储在Azure Data Lake存储(Gen 1)中的大型表,首先运行一个U-SQL脚本,然后运行一个Python脚本,最后输出结果

从概念上讲,这相当简单:

  • 运行.usql脚本从大型
    初始_表生成中间数据(两个表,
    intermediate_1
    intermediate_2
  • 在中间数据上运行Python脚本以生成最终结果
    final
  • Azure机器学习管道应该采取哪些步骤来实现这一点

    我认为以下计划会奏效:

  • 使用类似的
    AdlaStep
    adla_compute
    上运行.usql查询

    int_1 = PipelineData("intermediate_1", datastore=adls_datastore)
    int_2 = PipelineData("intermediate_2", datastore=adls_datastore)
    
    adla_step = AdlaStep(script_name='script.usql',
                         source_directory=sample_folder,
                         inputs=[initial_table],
                         outputs=[intermediate_1, intermediate_2],
                         compute_target=adla_compute)          
    
  • 在计算目标上运行Python步骤
    aml\u compute
    like

    python_step = PythonScriptStep(script_name="process.py",
                                   arguments=["--input1", intermediate_1, "--input2", intermediate_2, "--output", final],
                                   inputs=[intermediate_1, intermediate_2],
                                   outputs=[final],    
                                   compute_target=aml_compute, 
                                   source_directory=source_directory)
    
  • 然而,这在Python步骤中失败,出现了类似的错误

    StepRun(process.py)执行摘要

    =======================================================
    步骤运行(process.py)状态:失败

    无法装载数据存储mydatastore,因为它未指定 存储帐户密钥

    我真的不理解抱怨“mydatastore”的错误,它的名称与我运行U-SQL查询所针对的
    adls\U数据存储
    Azure Data Lake数据存储引用相关联

    有人能闻到我在这里做错了什么吗?
    我是否应该在
    PythonScriptStep
    之前将中间数据(
    intermediate\u 1
    intermediate\u 2
    )移动到存储帐户,例如使用
    DataTransferStep

    ADLS不支持装载。因此,您是对的,您必须首先使用DataTransferStep将数据移动到blob。

    AML compute不支持data Lake store。此表列出了不同的计算及其对不同数据存储的支持级别:

    您可以使用
    DataTransferStep
    将数据从ADL复制到blob,然后将该blob用作
    PythonScriptStep
    的输入。样本笔记本:

    
    #注册blob数据存储,链接笔记本中的示例
    #blob\u数据存储=数据存储。注册azure\u blob\u容器(。。。
    int_1_blob=DataReference(
    数据存储=blob_数据存储,
    数据\u引用\u name=“int\u 1\u blob”,
    数据存储上的路径=“int\u 1”)
    将\u int\u 1\u复制到\u blob=DataTransferStep(
    name='copy int_1 to blob',
    源数据参考=int\u 1,
    目的地数据参考=int\u 1\u blob,
    计算\目标=数据\工厂\计算)
    int_2_blob=DataReference(
    数据存储=blob_数据存储,
    数据\u引用\u name=“int\u 2\u blob”,
    数据存储上的路径=“int\u 2”)
    将\u int\u 2\u复制到\u blob=DataTransferStep(
    name='copy int_2 to blob',
    源数据参考=整数2,
    目的地数据参考=int\u 2\u blob,
    计算\目标=数据\工厂\计算)
    #更新PythonScriptStep以使用blob数据引用
    python_step=PythonScriptStep(。。。
    参数=[“--input1”,int_1_blob,“--input2”,int_2_blob,“--output”,final],
    输入=[int_1_blob,int_2_blob],
    ...)