Kinesis代理不解析文件

时间:2017-06-22 18:24:01

标签: amazon-web-services amazon-kinesis amazon-kinesis-firehose

我在agent.json

中有以下内容
{
  "cloudwatch.emitMetrics": true,
  "kinesis.endpoint": "",
  "firehose.endpoint": "", 
  "flows": [
    {
      "filePattern": "/home/ec2-user/ETLdata/contracts/Delta.csv",
      "kinesisStream": "ETL-rawdata-stream",
      "partitionKeyOption": "RANDOM",
      "dataProcessingOptions": [
        {
    "optionName": "CSVTOJSON",
    "customFieldNames": [ "field1", "field2"],
    "delimiter": ","
        }
      ] 
    }
  ]
}

当我将指定文件添加到文件夹时,几乎没有任何反应。我只在日志中看到以下内容。为什么它根本不解析文件。有没有人有任何想法?

更新:当我将文件模式设为/tmp/delta.csv时,它可以正常工作。看起来像权限问题,但日志中没有错误。

  

Tailer Progress:Tailer已经解析了0条记录(0字节),转换为0   记录,跳过0条记录,并已成功发送0条记录   目的地。 2017-06-22 18:12:03.671 + 0000   (Agent.MetricsEmitter RUNNING)   com.amazon.kinesis.streaming.agent.Agent [INFO]代理:进度:0   已解析的记录(0字节),以及成功发送的0条记录   目的地。正常运行时间:300020ms

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,我可以通过以下方式解决问题:

  1. 将要发送的数据从〜/ ec2-user / out-data移动到kinesis firehose流(一堆CSV文件)到另一个目录:

    mv *.csv /tmp/out-data
    
  2. 编辑agent.json文件,以便代理开始在文件的开头读取 - 这是我的agent.json文件:

    {
      "cloudwatch.emitMetrics": true,
      "firehose.endpoint": "firehose.eu-west-1.amazonaws.com",
      "flows": [
        {
          "filePattern": "/tmp/out-data/trx_headers_2017*",
          "deliveryStream": "TestDeliveryStream",
          "initialPosition": "START_OF_FILE"
        }
      ]
    }
    
  3. 我的猜测是你的Delta.csv文件被写入,所以kinesis代理正在检查文件的结尾并找不到新的记录,如果添加"initialPosition" : "START_OF_FILE"修复它将在开始时解析的文件。

答案 1 :(得分:0)

将数据移动到/ tmp / logs,/ var / logs将解决此问题。请勿将数据保留在/ ec2-user下。

链接到问题:https://github.com/awslabs/amazon-kinesis-agent/issues/58