2017-12-18 1 views
1

Kinesis Firehose로가는 Kinesis Stream을 통해 데이터 (레코드)를 처리하고 S3 버킷의 파일로 데이터를 출력합니다.CloudFormation의 AWS Kinesis에서 선 구분 기호를 추가하는 방법은 무엇입니까?

그러나 현재 모든 레코드는 출력 파일에서 같은 행에 있지만 각 레코드가 분리되어 각 행이 고유하게 나타나기를 원합니다. 그것은 현재처럼 보이는

Store1, 100, Broccoli 
Store1, 101, Avocado 
Store1, 102, Apple 

: 대신 같은의

여기

Store1, 100, BroccoliStore1, 101, AvocadoStore1, 102, Apple 

우리 CloudFormation 템플릿입니다 : 우리가 수 있도록 라인 분리를 추가 할 수있는 방법

Resources: 
    MyBucket: 
    Type: AWS::S3::Bucket 

    MyStream: 
    Type: AWS::Kinesis::Stream 
    Properties: 
     Name: my-stream 
     RetentionPeriodHours: 24 
     ShardCount: 5 

    MyFirehose: 
    Type: AWS::KinesisFirehose::DeliveryStream 
    Properties: 
     DeliveryStreamName: my-firehose 
     DeliveryStreamType: KinesisStreamAsSource 
     KinesisStreamSourceConfiguration: 
     KinesisStreamARN: 
      Fn::Sub: "${MyStream.Arn}" 
     RoleARN: 
      Fn::Sub: "${MyRole.Arn}" 
     S3DestinationConfiguration: 
     BufferingHints: 
      IntervalInSeconds: 60 
      SizeInMBs: 50 
     CompressionFormat: UNCOMPRESSED 
     Prefix: concessions/ 
     BucketARN: 
      Fn::Sub: "${MyBucket.Arn}" 
     RoleARN: 
      Fn::Sub: "${MyRole.Arn}" 

레코드가 자신의 줄에 나타 납니까?

+0

는 "당신은 각 레코드의 끝에 레코드 분리를 추가 할 수 있습니다 참조 개별 기록. " [documentation] (http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html)에서 확인하십시오. 그러나 CloudFormation에서이를 수행하는 방법에 대한 정보는 없습니다. –

답변

0

당신의 키네 시스 스트림을 먹이는 사람은 끝에 '\ n'을 추가해야합니다. 아래 참조 자바 예 : 운동성 파이어 호스로 전송하기 전에에 전달 S3 객체를 나눌 수 있도록

PutRecordRequest putRecordRequest = new PutRecordRequest(); 
putRecordRequest.setFirehoseName("incoming-stream"); 

String data = "some data" + "\n"; // add \n as a record separator 
Record record = new Record(); 
record.setData(ByteBuffer.wrap(data.getBytes(StandardCharsets.UTF_8))); 

putRecordRequest.setRecord(record); 
firehoseClient.putRecord(putRecordRequest); 

source.

관련 문제