You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过C# NuGet在ADF中运行SCOPE脚本?求ADLS实例示例及活动类型

在ADLS实例上运行SCOPE脚本的实现方案

核心可用活动类型

针对ADLS(包括Gen1和Gen2)运行SCOPE脚本,主要依赖Azure Data Factory (ADF) 或Azure Synapse Analytics中的以下活动:

  • U-SQL活动:适配ADLS Gen1原生SCOPE脚本场景(SCOPE是U-SQL的作业范围定义机制)
  • Synapse Notebook活动:针对ADLS Gen2,通过代码逻辑实现类SCOPE的批量数据/存储操作
  • 自定义活动:用于灵活扩展,支持PowerShell、Python等脚本直接操作ADLS

示例1:U-SQL活动运行ADLS Gen1 SCOPE脚本

  1. 先在ADF中配置ADLS Gen1链接服务,关联目标存储账户并授予作业访问权限。
  2. 管道中添加U-SQL活动,配置关键参数:
    • 脚本存储路径:指向ADLS Gen1中存放的SCOPE脚本(如/usql-scripts/adls-scope-job.usql)
    • 数据源:选择已配置的ADLS Gen1链接服务
    • 动态参数(可选):传递路径、日期等变量,比如@inputPath = "/raw-data/2024-05/"
  3. 示例SCOPE脚本片段:
    -- 定义并使用作业范围
    CREATE SCOPE AdlsDataProcessingScope;
    USE SCOPE AdlsDataProcessingScope;
    
    -- 从ADLS读取数据
    @rawData =
        EXTRACT RecordId int, UserName string, LogTime DateTime
        FROM "/raw-data/*.log"
        USING Extractors.Tsv();
    
    -- 处理后写入ADLS指定路径
    OUTPUT @rawData
        TO "/processed-data/cleaned-logs.csv"
        USING Outputters.Csv(quoting:false);
    

示例2:Synapse Notebook实现ADLS Gen2类SCOPE逻辑

针对ADLS Gen2,可通过Synapse Notebook编写代码实现类似SCOPE的批量操作:

  1. 配置ADLS Gen2链接服务,赋予Notebook存储账户的Blob Data Contributor权限。
  2. 编写PySpark脚本(模拟SCOPE的范围管理与数据处理):
    # 定义ADLS Gen2路径范围
    input_scope_path = "abfss://data-container@myadlsgen2.dfs.core.windows.net/input/2024-05/*"
    output_scope_path = "abfss://data-container@myadlsgen2.dfs.core.windows.net/output/processed-2024-05/"
    
    # 读取范围内的所有文件
    raw_df = spark.read.parquet(input_scope_path)
    
    # 执行数据过滤(对应SCOPE内的业务逻辑)
    filtered_df = raw_df.filter(raw_df["IsValid"] == True)
    
    # 写入ADLS指定范围路径
    filtered_df.write.mode("overwrite").parquet(output_scope_path)
    
  3. 在ADF或Synapse管道中添加Notebook活动,关联该Notebook并设置触发条件。

示例3:自定义活动运行PowerShell脚本操作ADLS

如果需要执行存储管理类的SCOPE逻辑(如权限配置、文件批量迁移),可使用自定义活动:

  1. 编写PowerShell脚本(操作ADLS Gen2):
    # 以托管身份连接Azure
    Connect-AzAccount -Identity
    
    # 获取ADLS存储账户上下文
    $storageAccount = Get-AzStorageAccount -ResourceGroupName "my-resource-group" -Name "myadlsgen2"
    $ctx = $storageAccount.Context
    
    # 执行SCOPE风格的批量操作:将指定文件夹下的文件移动到归档路径
    Get-AzStorageFile -Context $ctx -ShareName "data-container" -Path "temp-files/" | 
        Move-AzStorageFile -Destination "archive/temp-files-2024-05/"
    
  2. 在ADF中配置自定义活动,选择Azure Batch或Azure Function作为运行环境,上传脚本并配置托管身份的ADLS访问权限。

内容的提问来源于stack exchange,提问作者Dave L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:12:39