当前位置:  开发笔记 > 前端 > 正文

AWS Kinesis Firehose不在Redshift中插入数据

如何解决《AWSKinesisFirehose不在Redshift中插入数据》经验,为你挑选了2个好方法。

我尝试让一个Kinesis Firehose在Redshift表中推送数据.

firehose流正在工作并将数据放入S3.

但没有任何东西到达Redshift的目的地表.

在指标DeliveryToRedshift成功为0(DeliveryToRedshift记录为空)

加载日志(redshift Web控制台)和STL_LOAD_ERRORS表为空.

我检查过Firehose能够连接到Redshift(我看到STL_CONNECTION_LOG中的连接)

我该如何解决这个问题?



1> mathieu..:

最后,我通过删除并重新创建Firehose流来使其工作: - /可能通过Web控制台重复编辑使事情变得不稳定.

但这是故障排除指南:

一个很好的起点是这个程序:http://docs.aws.amazon.com/firehose/latest/dev/troubleshooting.html

检查数据是否到达S3

firehose交付必须具有IAM角色,并且firehose服务与此角色之间存在信任关系

此IAM角色必须具有S3访问策略

请参阅此处的政策jsons:http://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3

此时,Firehose监控中的"DeliveryToS3 Success"度量标准应为非零

Redshift群集必须可公开访问(请参阅群集Web控制台)

群集的安全组必须允许来自Firehose IP地址的入站流量:Firehose当前为每个可用的AWS区域使用一个CIDR块:

52.70.63.192/27美国东部(弗吉尼亚北部)

美国西部(俄勒冈州)52.89.255.224/27

欧盟(爱尔兰)52.19.239.192/27

仔细检查您为Firehose提供的红移用户/密码

此时,您应该能够在Redshift日志中看到连接尝试:

select * from stl_connection_log where remotehost like '52%' order by recordtime desc;  

检查Firehose使用的Redshift用户是否具有足够的目标表权限:

select tablename, 
   HAS_TABLE_PRIVILEGE(tablename, 'select') as select,
   HAS_TABLE_PRIVILEGE(tablename, 'insert') as insert,
   HAS_TABLE_PRIVILEGE(tablename, 'update') as update,
   HAS_TABLE_PRIVILEGE(tablename, 'delete') as delete, 
   HAS_TABLE_PRIVILEGE(tablename, 'references') as references 
from pg_tables where schemaname='public' order by tablename;

然后,您可以检查是否运行了COPY命令:

select * from stl_query order by endtime desc limit 10;

然后检查加载错误或服务器错误:

select * from stl_load_errors  order by starttime desc;
select * from stl_error where userid!=0 order by recordtime desc;

如果您的数据或COPY选项中存在格式问题,或者数据与目标列不匹配,则至少应该看到COPY尝试和一些加载错误.

如果您仍然卡住,这些日志表中没有任何内容,请尝试删除并重新创建整个firehose流,因为可能存在与Web控制台相关的一些错误.(这一步对我有用)


需要为入站规则(在安全组中)添加IP地址.这些错误都不会被记录下来.Kinesis应该改进错误记录
在我的案例中,重建firehose溪流.当我更改了firehose配置时,事件突然停止在红移中变为"COPY"(艰难的s3总是接收事件).

2> user5665464..:

转到firehose_delivery_role在Kinesis Firehose设置期间自动创建的IAM角色(),并确保附加以下角色:

AmazonS3FullAccess
AmazonRedshiftFullAccess
AmazonKinesisFullAccess
AmazonKinesisFirehoseFullAccess

有一个错误忽略了IAM中的S3凭据,使得Kinesis安装程序无法工作.

还要验证您实际上是否在S3中看到了累积的数据文件.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有