Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AWS Lambda功能的快速数据访问_Python_Amazon Web Services_Aws Lambda_Amazon Kinesis Firehose - Fatal编程技术网

Python AWS Lambda功能的快速数据访问

Python AWS Lambda功能的快速数据访问,python,amazon-web-services,aws-lambda,amazon-kinesis-firehose,Python,Amazon Web Services,Aws Lambda,Amazon Kinesis Firehose,我有一个基于python的lambda函数,它在s3 put操作上触发,该操作基于一个kinesis firehose流,该流以大约每分钟10k条记录的速率发送数据。现在lambda函数只是执行一些小的数据修正,并将其以100个批次的形式交付给logstash实例。lambda执行时间为5-12秒,这很好,因为它每分钟运行一次 我们正在考虑在将流数据发送到logstash之前,使用更多信息丰富流数据。每个传入的消息都有一个“id”字段,我们希望根据某种db查找该id,从db中获取一些额外的信息,

我有一个基于python的lambda函数,它在s3 put操作上触发,该操作基于一个kinesis firehose流,该流以大约每分钟10k条记录的速率发送数据。现在lambda函数只是执行一些小的数据修正,并将其以100个批次的形式交付给logstash实例。lambda执行时间为5-12秒,这很好,因为它每分钟运行一次

我们正在考虑在将流数据发送到logstash之前,使用更多信息丰富流数据。每个传入的消息都有一个“id”字段,我们希望根据某种db查找该id,从db中获取一些额外的信息,并在传递之前将其注入到对象中

问题是,我不能让它走得足够快。 我尝试将所有数据(600k记录)加载到DynamoDB中,并在lambda函数中对每个记录循环执行查找。这会大大降低执行速度。然后我想我们不必两次查找同一个id,所以我使用一个列表obj来保存已经“查找”过的数据-这使执行时间有所减少,但仍然不接近我们想要的

然后我考虑预加载整个DB数据集。我对此进行了测试——在开始循环遍历s3对象中的每条记录之前,只需将dynamodb中的所有600条记录转储到一个“缓存列表”对象中。数据转储大约在一分钟内完成,但缓存列表现在非常大,因此每次对其进行查找都需要5秒(比访问数据库慢得多)


我不知道该怎么做-我完全意识到lambda可能不是这个平台的合适平台,如果我们不能让它工作,我们可能会转向其他产品,但首先我想我会看看社区是否有一些关于如何加速这件事的指示。

将数据预加载到Redis服务器中。这正是Redis所擅长的。

是的,这一点很中肯。将lambda函数移到vpc内部,并跨出一个micro redis缓存。它在大约12秒内翻腾了8k记录,并在redis中查找了670k记录。谢谢你给我指出了正确的方向!很高兴我能帮忙。