输入和输出文件夹位置的配置文件

时间:2017-01-03 08:25:22

标签: azure-data-lake u-sql

我有多个U-SQL脚本,我在每个U-SQL脚本的顶部使用filename变量。有没有办法我们可以将输入和输出文件夹定义到任何配置文件,并读取该变量,常量或任何与ExtractOUTPUT

一起使用的内容
@tab1 = 
    EXTRACT f1 string,
            f2 string
    FROM **<path from config file>**
    USING Extractors.Csv(skipFirstNRows:1);

2 个答案:

答案 0 :(得分:1)

目前,U-SQL支持基本URI的概念,但目前硬编码为默认的ADLS帐户的根目录。您可以提交请求以将基URI设置为http://aka.ms/adlfeedback处的其他值,或者使用一些脚本参数化来自行构建。由于脚本可以有许多输入或输出位置,因此将其作为系统配置选项会增加太多的复杂性。

您可以按如下方式参数化您的U-SQL脚本:

// if you want to parameterize the whole path
DECLARE EXTERNAL @in = "/default/input.csv";
// if you have standard output path that you want to optionally overwrite and a user specified output file
DECLARE EXTERNAL @outdir = "/defaultoutput";
DECLARE EXTERNAL @outfile = "output.csv";
DECLARE @out = @outdir + "/" + @outfile;

@data = EXTRACT .... FROM @in USING ....;
...
OUTPUT @res TO @out USING ...;

以上内容也可以包含在程序中并存储在帐户中。

注意:我们正致力于在没有U-SQL语句的情况下对声明和引用进行分组,并将它们存储在元数据中以供将来重用。这将有助于您的方案减少锅炉板#34;。

提交时,您可以使用

添加实际路径
DECLARE @in = "/actual/input.csv";
DECLARE @outfile = "myoutput.csv";

//... rest of script or invocation of Procedure.

wBob的回复中的ADF示例正在为您做前缀。其他工具和SDK目前正在定义他们的参数传递模型(除了你自己做前置)。

这是否满足您的需求?

答案 1 :(得分:0)

可以使用Azure数据工厂按herehere运行参数化的U-SQL查询。输入和输出文件夹参数化的管道示例启动:

{
    "name": "ComputeEventsByRegionPipeline",
    "properties": {
        "description": "This is a pipeline to compute events for en-gb locale and date less than 2012/02/19.",
        "activities": [
            {
                "type": "DataLakeAnalyticsU-SQL",
                "typeProperties": {
                    "scriptPath": "adlascripts\\SearchLogProcessing.txt",
                    "scriptLinkedService": "StorageLinkedService",
                    "degreeOfParallelism": 3,
                    "priority": 100,
                    "parameters": {
                        "in": "/input/SearchLog.tsv",
                        "out": "/output/Result.tsv"
                    }
                },
...

您可以在部署ADF作业时阅读配置文件,例如使用Powershell。