如何通过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脚本
- 先在ADF中配置ADLS Gen1链接服务,关联目标存储账户并授予作业访问权限。
- 管道中添加U-SQL活动,配置关键参数:
- 脚本存储路径:指向ADLS Gen1中存放的SCOPE脚本(如
/usql-scripts/adls-scope-job.usql) - 数据源:选择已配置的ADLS Gen1链接服务
- 动态参数(可选):传递路径、日期等变量,比如
@inputPath = "/raw-data/2024-05/"
- 脚本存储路径:指向ADLS Gen1中存放的SCOPE脚本(如
- 示例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的批量操作:
- 配置ADLS Gen2链接服务,赋予Notebook存储账户的Blob Data Contributor权限。
- 编写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) - 在ADF或Synapse管道中添加Notebook活动,关联该Notebook并设置触发条件。
示例3:自定义活动运行PowerShell脚本操作ADLS
如果需要执行存储管理类的SCOPE逻辑(如权限配置、文件批量迁移),可使用自定义活动:
- 编写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/" - 在ADF中配置自定义活动,选择Azure Batch或Azure Function作为运行环境,上传脚本并配置托管身份的ADLS访问权限。
内容的提问来源于stack exchange,提问作者Dave L
相关产品推荐
相关产品推荐

