python-2.7 - Kinesis Agent 报告 python 流数据错误

标签 python-2.7 amazon-web-services amazon-kinesis amazon-kinesis-firehose amazon-kinesis-agent

我尝试从 python 代码创建一个简单的流数据,附加到日志文件,并使用 Kinesis Agent->Kinesis Firehose 将流数据加载到 Redshift 集群。

我确认 python 代码运行良好,创建了附加到日志文件的流数据。 我的 kinesis 代理已成功启动并进行了验证,并且还进行了适当的配置以从日志文件中提取数据并将其推送到 firehose 流。

Python 文件是一个简单的代码,随机记录纬度/经度位置。这只是为了进行示例 Firehose 流式传输,因此使用了示例数据:

latitude = 19.99
longitude = 73.78
file_n = '/tmp/random_lat_lon.log'

def generate_random_data(lat, lon, num_rows, file_name):
    with open(file_name, 'w+', 1) as output:
#        for _ in xrange(num_rows):
         while True:
            hex1 = '%012x' % random.randrange(16**12)
            flt = float(random.randint(0,100))
            dec_lat = random.random()/100
            dec_lon = random.random()/100
            output.write('%s,%.1f,%.6f,%.6f \n' % (hex1.lower(), flt, lon+dec_lon, lat+dec_lat))
            time.sleep(5)

generate_random_data(latitude, longitude, 5, file_n)

random_lat_lon.log 文件中的输出:

> 83d6c9f7a0be,25.0,73.782042,19.997504
> 18b69c5c5248,25.0,73.788921,19.995153
> 6a0d182996f0,91.0,73.783399,19.998097
> 431ba9e4f38e,0.0,73.781139,19.995481

当我检查 kinesis-Agent 时,我发现它不起作用,并且收到以下错误跟踪:

(FileTailer[kinesis:python-stream:/tmp/random_lat_lon.log*]) com.amazon.kinesis.streaming.agent.tailing.FileTailer [ERROR] FileTailer[kinesis:python-stream:/tmp/random_lat_lon.log*]: Error when processing current input file or when tracking its status.
java.lang.IllegalStateException
        at com.google.common.base.Preconditions.checkState(Preconditions.java:158)
        at com.amazon.kinesis.streaming.agent.tailing.TrackedFileRotationAnalyzer.findCurrentOpenFileAfterTruncate(Unknown Source)
        at com.amazon.kinesis.streaming.agent.tailing.SourceFileTracker.updateCurrentFile(Unknown Source)
        at com.amazon.kinesis.streaming.agent.tailing.SourceFileTracker.refresh(Unknown Source)
        at com.amazon.kinesis.streaming.agent.tailing.FileTailer.updateRecordParser(Unknown Source)
        at com.amazon.kinesis.streaming.agent.tailing.FileTailer.processRecords(Unknown Source)
        at com.amazon.kinesis.streaming.agent.tailing.FileTailer.runOnce(Unknown Source)
        at com.amazon.kinesis.streaming.agent.tailing.FileTailer.run(Unknown Source)
        at com.google.common.util.concurrent.AbstractExecutionThreadService$1$2.run(AbstractExecutionThreadService.java:60)
        at com.google.common.util.concurrent.Callables$3.run(Callables.java:95)
        at java.lang.Thread.run(Thread.java:748)

我的kinesis-Agent.json配置如下:

{
  "cloudwatch.emitMetrics": true,
  "kinesis.endpoint": "https://kinesis.us-east-1.amazonaws.com",
  "firehose.endpoint": "",

  "flows": [
    {
      "filePattern": "/tmp/random_lat_lon.log*",
      "kinesisStream": "python-stream"
    }
  ]
}

这是我第一次使用 Kinesis Firehose(使用 Python)的示例实验室体验。我错过了一些我无法弄清楚的东西。

有人可以帮忙提供建议吗?如果需要任何详细信息,请告诉我。

问候

最佳答案

我也面临着同样的问题。看起来像open issue来自亚马逊运动代理。我通过使用扩展名为 .dummy 的文件解决了这个问题,这样代理就有一个可以在任何给定时间点读取的文件。

关于python-2.7 - Kinesis Agent 报告 python 流数据错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49690054/

相关文章:

python - 查找条件为真的第一个列表元素

java - Amazon Kinesis + 集成测试

amazon-web-services - 如何在Amazon Kinesis服务上部署和运行Amazon Kinesis应用程序

python - 有没有办法将函数/语句指向自身?

python - 如何以有效的方式将具有 MultiIndex 的数据帧合并到另一个数据帧中?

python-2.7 - 将整个文件夹复制到 setup.py 文件中

java - 使用 AWS Java DynamoDB 流 Kinesis 适配器处理 DynamoDB 流

c# - Entity Framework 不更新 Amazon RDS SQL 数据库

ios - AFAmazonS3Manager 可接受的图像内容类型

mysql - 无法连接到使用 Elastic Beanstalk 创建的 RDS 实例