提取中的U-Sql错误

时间:2017-10-30 05:06:22

标签: azure azure-data-lake u-sql

我们编写了一个USQL脚本来提取(.CSV文件),其中所有列都作为一行提取。但是,当作业失败时,我们无法处理所有文件。我们得到的错误消息是“VERTEX FAILED FAST”但是如果我们将文件格式转换为(.Csv)(MS-DOS)扩展名,则作业将被执行。 有人可以找出问题并告诉我们如何解决它。或者将所有列提取为行的任何其他方式也会有所帮助。我们还附上​​了剧本。

$scripts = @"
@rs =
    EXTRACT 
        line string,
        filename string 
    FROM "$filepath/$jobid/{filename}.csv"
    USING Extractors.Text(delimiter:'\n', skipFirstNRows: 1);
@j =
    SELECT *
    FROM @rs;
@rs1 =
    SELECT *
    FROM @j 
    WHERE $output;

@k=
    SELECT filename,COUNT() AS Count1
    FROM @j 
    WHERE $output
    GROUP BY filename;
OUTPUT @rs1 
    TO "$filepath/$jobid/logdata.txt"
    USING Outputters.Text(); 

OUTPUT @k
    TO "$filepath/$jobid/count.txt"
    USING Outputters.Text();

"@

1 个答案:

答案 0 :(得分:1)

首先我很抱歉当前错误消息不是更明显。 Vertex Failed快速错误消息包含更多详细信息,可以告诉您实际导致顶点失败的原因。你有那些信息吗?没有它,没有推测就很难回答这个问题。

话虽如此,Vertex的根本原因通常是快速适应以下类别之一:

  1. 您的行的列数与预期的不同。这可能不是这种情况。

  2. 您的行包含无法强制转换为列指定数据类型的数据。同样,在你的情况下不太可能。

  3. 您的行/单元格包含的数据对于数据类型来说太大了。这可能是你的情况,虽然你提到改变CSV文件编码使其工作似乎表明它也可能是4.如果是这种情况,你将不得不找到一种截断或拆分行的方法几行。

  4. 文件的编码不是UTF-8(默认设置假定),而是一些其他编码,它会导致错误(最多无效编码,或前3个选项中的任何一个)。如果是这种情况,请指定正确的编码或更改文件的编码。

  5. 如果这对您无法解决问题,请转发给usql(at)microsoft dot com上的工作链接。