1

我正在使用 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

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

4

1 回答 1

0

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 文件中的列顺序。然后尝试添加

TRUNCATECOLUMNS 空白sasnull 空asnull

3- 一个例子

复制 testrbl3 ( eventId,serverTime,pageName,action,ip,userAgent,location,plateform,language,campaign,content,source,medium,productID,colorCode,scrolltoppercentage) FROM 's3://bucketname/' CREDENTIALS 'aws_iam_role=arn: aws:iam:::role/' MANIFEST json 'auto' TRUNCATECOLUMNS blanksasnull emptyasnull;

于 2018-09-07T07:50:35.320 回答