Kinesis 代理不解析文件

Posted

技术标签:

【中文标题】Kinesis 代理不解析文件【英文标题】:Kinesis agent not parsing the file 【发布时间】:2017-11-26 04:08:27 【问题描述】:

我在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 进度:Tailer 已解析 0 条记录(0 字节),已转换 0 记录,跳过 0 条记录,并已成功发送 0 条记录到 目的地。 2017-06-22 18:12:03.671+0000 (Agent.MetricsEmitter 正在运行) com.amazon.kinesis.streaming.agent.Agent [INFO] 代理:进度:0 已解析的记录(0 字节),0 条记录成功发送到 目的地。正常运行时间:300020ms

【问题讨论】:

【参考方案1】:

我遇到了类似的问题,我可以通过执行以下操作来解决它:

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

    mv *.csv /tmp/out-data
    

    编辑 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"
        
      ]
    
    

我的猜测是您的 Delta.csv 文件正在被写入,因此 kinesis 代理正在检查文件末尾并没有找到新记录,如果您添加 "initialPosition" : "START_OF_FILE" 修复,它将在文件开头开始解析.

【讨论】:

【参考方案2】:

将您的数据移动到 /tmp/logs,/var/logs 将解决此问题。不要将数据留在 /ec2-user 下。

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

【讨论】:

【参考方案3】:

我也有同样的问题。我通过执行以下操作解决了它。

    将数据移动到var/logs/<anyfolder or file> 确保文件在写入后关闭。我在使用python时将日志写入文件后使用了f.close()

【讨论】:

以上是关于Kinesis 代理不解析文件的主要内容,如果未能解决你的问题,请参考以下文章

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

Boto3 Kinesis Video GetMedia 和 OpenCV

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

Aws云形成模板:如何为Kinesis资源提供保留期?

Amazon Kinesis:在同步 Kinesis 分片和租约时捕获异常

kinesis 数据流中的分片是啥