错误处理 - SQL适用于应用程序的 Amazon Kinesis Data Analytics 开发者指南

对于新项目,我们建议您使用适用于 Apache Flink Studio 的新托管服务,而不是应用程序版 Kinesis Data Analytics。SQLManaged 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 定义的原始泵