Azure Data Lake 分析作业无法从 Data Lake 存储读取数据

问题描述 投票:0回答:2

我有一个从 Azure blob 复制到 Azure 数据湖存储的 CSV 文件。管道建立成功并复制文件。

我正在尝试从这里编写 USQL 示例脚本:

首页 -> datalakeanalysis1->示例脚本-> 新作业

它向我展示了一个默认脚本。

//Define schema of file, must map all columns
@searchlog = 
    EXTRACT UserId          int, 
        Start           DateTime, 
        Region          string, 
        Query           string, 
        Duration        int, 
        Urls            string, 
        ClickedUrls     string
FROM @"/Samples/Data/SearchLog.tsv"
USING Extractors.Tsv();

OUTPUT @searchlog 
TO @"/Samples/Output/SearchLog_output.tsv"
USING Outputters.Tsv();

注意:我在数据湖存储中的文件在这里:

首页->dls1->数据浏览器->rdl1

如何在脚本中给出 CSV 文件的路径(我的 CSV 文件存储在 Data Lake Store 中)?

此外,我想将目标文件(输出)保留在数据湖存储中。

如何修改脚本以引用数据湖存储路径?

编辑

我已更改脚本如下:

//Define schema of file, must map all columns
@searchlog = 
EXTRACT ID1          int, 
        ID2           int, 
        Date          DateTime, 
        Rs          string, 
        Rs1        string, 
        Number            string, 
        Direction     string,
        ID3            int
FROM @"adl://rdl1.azuredatalakestore.net/blob1/vehicle1_09142014_JR.csv"
USING Extractors.Csv();

OUTPUT @searchlog 
TO @"adl://rdl1.azuredatalakestore.net/blob1/vehicle1_09142014_JR1.csv"
USING Outputters.Csv();

但是,我的工作因附加错误而失败:

enter image description here

此外,我还附上了我想在工作中使用的 CSV 文件。

示例 CSV 文件

CSV 文件有问题吗?或者在我的脚本中?

azure azure-data-factory azure-data-lake u-sql
2个回答
1
投票

我相信,在从文件中提取数据时,您可以传递一些附加参数来忽略标题行

https://msdn.microsoft.com/en-us/azure/data-lake-analytics/u-sql/extractor-parameters-u-sql#skipFirstNRows

@searchlog = 
EXTRACT ID1          int, 
        ID2           int, 
        Date          DateTime, 
        Rs          string, 
        Rs1        string, 
        Number            string, 
        Direction     string,
        ID3            int
FROM @"adl://rdl1.azuredatalakestore.net/blob1/vehicle1_09142014_JR.csv"
USING Extractors.Csv(skipFirstNRows:1);

在所有情况下都可能或不可能修改输入文件,特别是如果输入文件被您无法控制的利益相关者删除。


0
投票

我按照你的步骤重现了你的问题。

enter image description here

我的样本数据:

ID1,ID2,Date,Rs,Rs1,Number,Direction,ID3
1,1,9/14/2014 0:00,46.81006,-92.08174,51,S,1
1,2,9/14/2014 0:00,46.81006,-92.08174,13,NE,1
1,3,9/14/2014 0:00,46.81006,-92.08174,48,NE,1
1,4,9/14/2014 0:00,46.81006,-92.08174,30,W,1

根据错误日志,我发现它无法解析标题行。因此,我删除了标题行,一切正常。

修改数据:

1,1,9/14/2014 0:00,46.81006,-92.08174,51,S,1
1,2,9/14/2014 0:00,46.81006,-92.08174,13,NE,1
1,3,9/14/2014 0:00,46.81006,-92.08174,48,NE,1
1,4,9/14/2014 0:00,46.81006,-92.08174,30,W,1

Usql 脚本:

//Define schema of file, must map all columns
@searchlog = 
    EXTRACT ID1          int, 
            ID2           int, 
            Date          DateTime, 
            Rs          string, 
            Rs1        string, 
            Number            string, 
            Direction     string,
            ID3            int
    FROM @"/test/data.csv"
    USING Extractors.Csv();

OUTPUT @searchlog 
    TO @"/testOutput/dataOutput.csv"
    USING Outputters.Csv();

输出:

enter image description here

希望对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.