python - 将数据输入Elasticsearch和RabbitMQ的S3的最佳方法是什么?

标签 python elasticsearch rabbitmq snowflake-cloud-data-platform amazon-kinesis-firehose

在我的公司中,我们开发了一些游戏,对于某些游戏,事件被发送给Elasticsearch,其他事件则发送给RabbitMQ。我们有一个本地CLI,该CLI可以从这两者中获取数据,将消息编译成压缩的(Gzip)JSON文件,然后另一个CLI将它们转换为SQL语句,然后将它们扔到本地SQL Server中。我们现在想扩大规模,但是当前的设置很麻烦,而且无法实时进行分析。
我最近用Python构建了一个应用程序,打算将其发布到AWS的docker容器中。该脚本从Elasticsearch获取数据,编译为小型压缩JSONS,然后发布到S3存储桶。从那里,数据被摄取到Snowflake中进行分析。到目前为止,我能够相当快地获取数据,并且有望作为替代方案。
我打算与RabbitMQ做类似的事情,但我想找到一个更好的替代方法,该方法可以无缝地执行此摄取过程,并帮助我避免在python代码中实现各种异常调用。

  • 我进行了一些研究,发现可能存在将RabbitMQ链接到Amazon Kinesis Firehose的方法。我的问题是:如何将RabbitMQ的流发送到Kinesis?
  • 对于Elasticsearch,实现此目标的最佳方法是什么?我已经阅读了有关S3的Logstash插件(https://www.elastic.co/guide/en/logstash/current/plugins-outputs-s3.html)和有关运动学的Logstash插件(https://www.elastic.co/guide/en/logstash/current/plugins-inputs-kinesis.html)的信息。哪种方法最适合实时摄取?
  • 最佳答案

    我的回答非常有主题意义,需要在现实世界中进行测试,并适应您的用例。
    对于近乎实时的行为,我将使用logstash

    带有 flex 搜索输入和短cron的

  • 。这篇文章可以帮助https://serverfault.com/questions/946237/logstashs-elasticsearch-input-plugin-should-be-used-to-output-to-elasticsearch
  • S3输出(支持gzip)
  • 也许jdbc输出到您的数据库
  • RabbitMq输出插件

  • 您可以通过输出到RabbitMQ来创建更多可调用的archi,并使用其他管道来监听队列并执行其他任务。
  • 从logstash ES-> Rabbit MQ
  • 从logstash RabbitMQ-> SQL
  • 从logstash RabbitMQ-> Kinesis
  • 从logstash RabbitMQ-> AWS
  • 等...
  • 关于python - 将数据输入Elasticsearch和RabbitMQ的S3的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63514622/

    相关文章:

    python - 如何在 Python IDLE Shell 中获取终端高度(以行为单位)?

    php - 爆炸的病态正则表达式(时间和内存)?

    elasticsearch - 减少 ElasticSearch 中的分片数量

    elasticsearch - Elasticsearch -查询字符串-根据自定义顺序返回结果

    elasticsearch - 内容类型标题不支持错误消息

    python - 在django中加载具有变量名的静态文件

    java - 当我尝试使用自定义端口从 java 连接时,Docker 中的 RabbitMQ 抛出异常

    ruby-on-rails - RabbitMQ 3.5.6 无法与任何配置的主机建立 TCP 连接 (Bunny::TCPConnectionFailedForAllHosts)

    rabbitmq - Spring AMQP/RabbitMQ 和 Hibernate 事务管理器

    python 访问字典有两个键,只使用一个键