S3 到红移 nifi

Posted

技术标签:

【中文标题】S3 到红移 nifi【英文标题】:S3 to redshift nifi 【发布时间】:2019-11-03 18:09:47 【问题描述】:

我读了一段时间关于如何将我的 S3 数据上传到 Redshift、COPY 命令、Glue 等。 我的管道几乎完全在 NIFI 中,例如: extract_data->插入到 S3->执行 Lamda 进程以转换数据或使用 Athena 将数据丰富,分 2 或 3 个阶段到另一个 S3 存储桶(我们称之为已处理存储桶)。

现在我想继续这个管道,从已处理的存储桶中加载数据并将其插入到 redshift,我为此创建了一个空表。

这个想法是在一些表和其他表中增量添加以删除当天加载的所有数据并重新加载。

谁能告诉我从哪里开始? 谢谢!

【问题讨论】:

【参考方案1】:

当数据进入您的“已处理存储桶”时,您可以触发 lambda 函数,该函数通过调用 HTTP webhook 触发 Apache NiFi 中的流。要公开这样的 webhook,您可以使用以下处理器之一:

ListenHTTP

启动 HTTP 服务器并侦听给定的基本路径以进行转换 FlowFiles 中的传入请求。服务的默认 URI 将 是 http://hostname:port/contentListener。只有 HEAD 和 POST 支持请求。 GET、PUT 和 DELETE 将导致错误 以及 HTTP 响应状态码 405。

HandleHttpRequest

启动 HTTP 服务器并侦听 HTTP 请求。对于每个请求, 创建一个流文件并转移到“成功”。该处理器是 旨在与 HandleHttpResponse 结合使用 处理器以创建 Web 服务

所以流程是ListenHTTP -> FetchS3 -> Process -> PutSQL (with Redshift connection pool)。 lambda 函数会调用GET my-nifi-instance.com:PORT/my-webhook,这样ListenHTTP 就会为传入的请求创建一个流文件。

【讨论】:

以上是关于S3 到红移 nifi的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法通过数据管道以预定义的顺序将文件从 S3 复制到红移

我们可以使用复制命令使用访问密钥和秘密密钥将数据从 S3 加载到红移表中吗(不使用 IAM 角色)

将 Hive 表迁移到红移

Spark没有将所有数据保存到红移

隧道到红移集群

尝试将胶水表复制到红移时出现“在 awaitResult 中引发的异常:”错误