【问题标题】:U-Sql Error in ExtractingU-Sql 提取错误
【发布时间】:2017-10-30 05:06:22
【问题描述】:

我们编写了一个 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();

"@

【问题讨论】:

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


    【解决方案1】:

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

    话虽如此,Vertex 失败的根本原因通常属于以下类别之一:

    1. 您的行的列数与您预期的不同。这里不太可能出现这种情况。

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

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

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

    如果这不能帮助您解决问题,请将 usql (at) microsoft dot com 的工作链接转发给我。

    【讨论】:

    • 非常感谢!这是案例号。 4给我们!我们在提取器语句中明确提到编码为 UTF8!现在它运行完美!
    • VertexFailedFast 也适用于“ACL 验证失败”,当用户没有目标数据文件的读/写权限时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多