了解 Amazon Data Firehose 中的数据传输 - Amazon Data Firehose

将 Amazon Data Firehose 流传输到亚马逊 S3 中的 Apache Iceberg Tables 处于预览阶段,可能会发生变化。

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

了解 Amazon Data Firehose 中的数据传输

当您向 Firehose 直播发送数据时,数据会自动传输到您选择的目的地。下表说明了向不同目的地传送数据。

目标位置 详细信息
Amazon S3

为了将数据传输到 Amazon S3,Firehose 会根据您的 Firehose 流的缓冲配置连接多条传入的记录。然后,将记录作为 Amazon S3 对象传输到 Amazon S3。默认情况下,Firehose 连接的数据时不带任何分隔符。如果您想在记录之间使用新的行分隔符,则可以通过在 Firehose 控制台配置或参数中启用该功能来添加新的行分隔符。API

Amazon Redshift

为了向 Amazon Redshift 传输数据,Firehose 首先按照前面描述的格式将传入的数据传送到你的 S3 存储桶。然后,Firehose 会发出 Amazon COPY Redshift 命令,将数据从 S3 存储桶加载到亚马逊 Redshift 预配置集群或亚马逊 Redshift 无服务器工作组。确保在 Amazon Data Firehose 将多个传入记录连接到 Amazon S3 对象之后,可以将亚马逊 S3 对象复制到您的 Amazon Redshift 预配置集群或亚马逊 Redshift 无服务器工作组。有关更多信息,请参阅亚马逊 Redshift COPY 命令数据格式参数

OpenSearch 服务和 OpenSearch 无服务器 为了向 OpenSearch 服务和 OpenSearch 无服务器传输数据,Amazon Data Firehose 会根据您的 Firehose 流的缓冲配置来缓冲传入的记录。然后,它会生成一个 OpenSearch 服务或 OpenSearch无服务器批量请求,将多条记录索引到您的 OpenSearch 服务集群或 OpenSearch 无服务器集合。在将记录发送到 Amazon Data Firehose 之前,请确保对记录进行 UTF -8 编码并扁平化为单行JSON对象。此外,必须将 OpenSearch 服务集群的rest.action.multi.allow_explicit_index选项设置为 true(默认),才能使用为每条记录设置的显式索引来接受批量请求。有关更多信息,请参阅《Amazon OpenSearch 服务开发者指南》中的 OpenSearch 服务配置高级选项
Splunk

为了向 Splunk 传输数据,Amazon Data Firehose 会连接您发送的字节。如果要在您的数据中使用分隔符(如换行符),您必须自行插入这些分隔符。确保将 Splunk 配置为解析任何此类分隔符。要将传送到 S3 错误存储桶(S3 备份)的数据重新驱动回 Splunk,请按照 Splunk 文档中提到的步骤进行操作。

HTTP端点 要将数据传输到受支持的第三方服务提供商拥有的HTTP终端节点,您可以使用集成的 Amazon Lambda 服务创建一个函数,将传入的记录转换为与服务提供商集成所期望的格式相匹配的格式。请联系您为目的地选择HTTP终端节点的第三方服务提供商,详细了解他们接受的记录格式。
Snowflake

为了向 Snowflake 传输数据,Amazon Data Firehose 会在内部缓冲数据一秒钟,并使用 Snowflake 流式传输API操作将数据插入到 Snowflake。默认情况下,您插入的记录每秒都会刷新并提交到 Snowflake 表。在您进行插入调用后,Firehose 会发出一个 CloudWatch 指标,用于衡量将数据提交到 Snowflake 所花费的时间。Firehose 目前仅支持单个JSON项目作为记录有效载荷,并且不支持JSON数组。确保您的输入有效负载是有效的JSON对象,并且格式正确,没有任何额外的双引号、引号或转义字符。

每个 Firehose 目标都有自己的数据传输频率。有关更多信息,请参阅 配置缓冲提示

重复记录

Amazon Data Firehose 使用 at-least-once 语义进行数据传输。在某些情况下,例如当数据传输超时时,如果原始数据传输请求最终通过,Amazon Data Firehose 的传送重试可能会引入重复项。这适用于亚马逊数据 Firehose 支持的所有目标类型。