U-Sql 提取错误

U-Sql Error in Extracting

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

"@

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

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

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

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

  3. 您的 row/cell 包含的数据对于该数据类型来说太大了。这可能是你的情况,尽管因为你提到更改 CSV 文件编码使其工作似乎表明它也可能是 4。如果是这种情况,你将不得不找到一种方法来截断或拆分行多行。

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

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