mat*_*ieu 15 amazon-web-services amazon-redshift amazon-kinesis-firehose
我尝试让一个Kinesis Firehose在Redshift表中推送数据.
firehose流正在工作并将数据放入S3.
但没有任何东西到达Redshift的目的地表.
我该如何解决这个问题?
mat*_*ieu 38
最后,我通过删除并重新创建Firehose流来使其工作: - /可能通过Web控制台重复编辑使事情变得不稳定.
但这是故障排除指南:
此时,您应该能够在Redshift日志中看到连接尝试:
select * from stl_connection_log where remotehost like '52%' order by recordtime desc;
Run Code Online (Sandbox Code Playgroud)检查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;
Run Code Online (Sandbox Code Playgroud)然后,您可以检查是否运行了COPY命令:
select * from stl_query order by endtime desc limit 10;
Run Code Online (Sandbox Code Playgroud)然后检查加载错误或服务器错误:
select * from stl_load_errors order by starttime desc;
select * from stl_error where userid!=0 order by recordtime desc;
Run Code Online (Sandbox Code Playgroud)如果您的数据或COPY选项中存在格式问题,或者数据与目标列不匹配,则至少应该看到COPY尝试和一些加载错误.
如果您仍然卡住,这些日志表中没有任何内容,请尝试删除并重新创建整个firehose流,因为可能存在与Web控制台相关的一些错误.(这一步对我有用)
转到firehose_delivery_role在Kinesis Firehose设置期间自动创建的IAM角色(),并确保附加以下角色:
AmazonS3FullAccess
AmazonRedshiftFullAccess
AmazonKinesisFullAccess
AmazonKinesisFirehoseFullAccess
Run Code Online (Sandbox Code Playgroud)
有一个错误忽略了IAM中的S3凭据,使得Kinesis安装程序无法工作.
还要验证您实际上是否在S3中看到了累积的数据文件.
小智 6
想为在这里迷路的任何人发布我的案例。
我们通过此处发布的说明强制执行对 S3 存储桶的服务器端加密调用:http : //docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
在 Firehose 使用的存储桶上使用此策略的问题在于 Firehose 创建未加密的清单文件以及加密的数据文件。如果此策略到位,则不会在 S3 上创建清单文件,因此不会触发 Redshift 加载。所以我们的行为显示数据到达存储桶,但没有清单文件,因此没有数据加载。
| 归档时间: |
|
| 查看次数: |
8437 次 |
| 最近记录: |