繁体   English   中英

有没有办法将数据从S3存储桶放入Kinesis Firehose?

[英]Is there a way to put data into Kinesis Firehose from S3 bucket?

我想通过Firehose将S3存储桶中的流数据写入Redshift,因为数据是实时流(每分钟600个文件),并且我不希望任何形式的数据丢失。

如何将数据从S3放入Kinesis Firehose?

看来您的情况是:

  • 文件从SFTP服务器随机出现在S3中
  • 您想将数据加载到Redshift

您可以通过两种基本方法执行此操作:

  • 将数据直接从Amazon S3加载到Amazon Redshift,或
  • 通过Amazon Kinesis Firehose发送数据

坦白说,通过Kinesis Firehose发送它几乎没有好处,因为Kinesis会简单地对其进行批处理,将其存储到临时S3文件中,然后将其加载到Redshift中。 因此,这不是一个有益的方法。

相反,我建议:

  • 在Amazon S3存储桶上配置一个事件,以便在创建文件时将消息发送到Amazon SQS队列
  • 配置Amazon CloudWatch Events定期(例如,每小时或15分钟,或满足您业务需求的任何时间)触发AWS Lambda功能
  • AWS Lambda函数从SQS读取消息并构造清单文件 ,然后触发Redshift导入清单文件中列出的文件

这是一个简单的,松耦合的解决方案,比Firehose的方法要简单得多(后者需要以某种方式读取每个文件并将其内容发送到Firehose)。

Firehose实际上是为相反的目的而设计的,Firehose会将传入的流数据发送 Amazon S3,而不是 Amazon S3发送给Amazon S3,除了S3之外,它还可以将数据发送到其他服务,例如Redshift和Elasticsearch Service。

我不知道这是否可以解决您的问题,但是您可以使用S3的COPY进行红移。

希望对您有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM