错误处理 - 适用于 SQL 应用程序的 Amazon Kinesis Data Analytics 开发人员指南
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

对于新项目,建议您使用新的适用于 Apache Flink Studio 的托管服务,而不是使用适用于 SQL 应用程序的 Kinesis Data Analytics。Managed Service for Apache Flink Studio 不仅操作简单,还具有高级分析功能,使您能够在几分钟内构建复杂的流处理应用程序。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

错误处理

Amazon Kinesis Data Analytics 会直接向您返回 API 或 SQL 错误。有关 API 操作的更多信息,请参阅操作。有关处理 SQL 错误的更多信息,请参阅 Amazon Kinesis Data Analytics SQL 参考

Amazon Kinesis Data Analytics 使用名为 error_stream 的应用程序内部错误流报告运行时错误。

使用应用程序内部错误流报告错误

Amazon Kinesis Data Analytics 向名为 error_stream 的应用程序内部错误流报告运行时错误。下面是可能出现的错误的示例:

  • 从流式传输源读取的一个记录不符合输入架构。

  • 您的应用程序代码指定被零除。

  • 行顺序错误(例如,流中出现的一个记录具有 ROWTIME 值,一个用户修改该值后导致记录顺序错误)。

  • 源流中的数据无法转换为架构中指定的数据类型 (强制转换错误)。有关可转换的数据类型的信息,请参阅将 JSON 数据类型映射到 SQL 数据类型

建议以编程方式在 SQL 代码中处理这些错误或将错误流上的数据永久保存到外部目标。这需要将输出配置添加到您的应用程序 (请参阅配置应用程序输出)。要查看应用程序内错误流工作方式的示例,请参阅示例:探索应用程序内部错误流

注意

由于错误流是使用系统账户创建的,因此,Kinesis Data Analytics 应用程序无法以编程方式访问或修改错误流。必须使用错误输出来确定应用程序可能遇到的错误。然后,编写应用程序的 SQL 代码来处理预期的错误情况。

错误流架构

错误流具有以下架构:

Field

数据类型

备注

ERROR_TIME

TIMESTAMP

错误出现的时间

ERROR_LEVEL

VARCHAR(10)

ERROR_NAME

VARCHAR(32)

MESSAGE

VARCHAR(4096)

DATA_ROWTIME

TIMESTAMP

传入记录的行时间

DATA_ROW

VARCHAR(49152)

原始行中的十六进制编码数据。您可以使用标准库对此值进行十六进制解码,也可以使用 Web 资源,如 Hex to String Converter

PUMP_NAME

VARCHAR(128)

利用 CREATE PUMP 定义的原始泵