aws kinesis firehose 中的复制命令不起作用

Posted

技术标签:

【中文标题】aws kinesis firehose 中的复制命令不起作用【英文标题】:copy command in aws kinesis firehose not working 【发布时间】:2018-07-22 08:55:33 【问题描述】:

我正在使用 Kinesis firehose,它在 S3 中加载数据并创建 Menifest 文件。

我正在从 Menifest 复制数据,但它抛出了一个错误。

我的清单文件:mydeliverystream-2018-07-22-08-01-06-bd895f6a-4fad-485


  "entries" : [ 
    "url" : "s3://testings3/2018/07/22/07/mydeliverystream-3-2018-07-22-07-56-04-89605e0e-26bf-4017-a102-338ceb15481d",
    "mandatory" : true
   ]

复制我正在使用 firehose 的命令

COPY redshiftproduct FROM 's3://testings3/mydeliverystream' CREDENTIALS 'aws_iam_role=arn:aws:iam::329723704744:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift' delimiter ',' MANIFEST region 'us-east-1'

请注意;我也尝试在 manifest 关键字后添加分隔符。

我在复制命令中收到的错误包含语法错误。

Data file:
delhi,ac,4000,2011
Haryana,TV,5000,2001
Channai,TV,3000,2011
Mumbai,Laptop,4000,2012
new delhi,ac,5000,2012
Kolkatta,fridge,1000,2012
Kanpur,TV,2000,2013
Haryana,ac,2000,2019
Kanpur,ac,2000,2019

我做错了什么,我该如何解决?

【问题讨论】:

【参考方案1】:

1- 您需要添加 FORMAT AS JSON 's3://yourbucketname/aJsonPathFile.txt'。 AWS 还没有提到这一点。请注意,这仅在您的数据为 JSON 格式时才有效,例如

'attr1': 'val1', 'attr2': 'val2' 'attr1': 'val1', 'attr2': 'val2' 'attr1': 'val1', 'attr2': 'val2' 'attr1': 'val1', 'attr2': 'val2'

2- 您还需要验证 kinesis firehouse 和 csv 文件中的列顺序。然后尝试添加

截断空白sasnull emptyasnull

3- 一个例子

从 's3://bucketname/' CREDENTIALS 'aws_iam_role =arn:aws:iam:::role/' MANIFEST json 'auto' TRUNCATECOLUMNS blanksasnull emptyasnull;

【讨论】:

以上是关于aws kinesis firehose 中的复制命令不起作用的主要内容,如果未能解决你的问题,请参考以下文章

将镶木地板从 AWS Kinesis firehose 写入 AWS S3

从 fluentd 发送到 aws kinesis firehose 时数据丢失

Node.js中的代码AWS Lambda Package不会调用putRecord()来将数据添加到AWS Kinesis Firehose Stream中

使用 AWS kinesis-firehose 将数据写入文件

将 AWS Kinesis Firehose 回填到 Elasticsearch Service 失败记录

Kinesis Firehose-什么是S3扩展目标配置?