我想知道是否有任何提示和技巧来发现数据湖分析作业中的错误。错误消息似乎大部分时间不是很详细。调试u-sql作业
当试图从CSV文件中提取我经常收到错误这样
Vertex failure triggered quick job abort. Vertex failed: SV1_Extract[0] with >error: Vertex user code error.
Vertex failed with a fail-fast error
似乎试图将列转换为指定的类型时,会出现这些错误。
我发现的技术是将所有列提取到字符串,然后执行SELECT操作,将尝试将列转换为预期类型。按列操作该列可以帮助查找错误的特定列。
@data =
EXTRACT ClientID string,
SendID string,
FromName string,
FROM "wasb://..."
USING Extractors.Csv();
//convert some columns to INT, condition to skip header
@clean =
SELECT Int32.Parse(ClientID) AS ClientID,
Int32.Parse(SendID) AS SendID,
FromName,
FROM @data
WHERE !ClientID.StartsWith("ClientID");
是否也可以使用像一个的TryParse在分析错误的情况下返回null或默认值,而不是整个工作失败?
感谢
感谢您提供有关详细错误的提示。我怀疑问题是在文件中有特殊字符。这证实了它。我的文件是AINSI编码的,而不是UTF-8。除了转换文件之外,有没有办法解决这个问题? – Olivier
现在唯一的解决方法是编写自己的自定义提取器或将字段提取为byte [],然后自己执行代码页转换。如果您知道所需的ANSI编码,请在此处投票:https://feedback.azure.com/forums/327234-data-lake/suggestions/13077555-add-ansi-code-page-support-for-built-in -extractors –