【问题标题】:Spark Email ProcessingSpark 电子邮件处理
【发布时间】:2015-12-27 09:14:04
【问题描述】:

我们正在开发一种大数据解决方案,其中一个要求是处理传入的电子邮件。技术堆栈尚未最终确定,但大多数情况下,我们可能会使用 Sendmail 作为 MTA,Procmail 作为 MDA。我们对任何其他非常有效的解决方案持开放态度。

这些电子邮件本质上是在附件中携带数据,并不适用于最终用户,因此电子邮件流以 Spark 处理结束。

我的第一个想法是,如果有一个消息队列系统(例如 Apache-Kafka)可以接受电子邮件作为消息,然后按需将它们提供给客户端(例如 Spark),那就太好了,但似乎是那种技术/方法在任何消息代理系统中均不可用。

这意味着我们必须通过 SMTP MTA 接收电子邮件,然后从 MDA 中提取信息。

我们可以使用 Procmail 提取电子邮件和附件的内容,并将它们放在每个电子邮件的文件夹中,然后扫描文件夹并在 spark 中处理它们。

或者,如果 Spark 有任何插件可以从 MDA 中提取电子邮件并将其分解为附件,这将使生活变得更加简单。

如果有任何其他更智能的解决方案,我们将不胜感激。

因此,根本问题是有哪些技术可用于通过 Spark 对电子邮件进行通道化处理。连接器等

【问题讨论】:

  • “Sendmail”,在这个时代;严重地?大多数没有旧版 Sendmail 的商店会更喜欢另一个 MTA。 Postfix 作为替代品非常受欢迎。
  • 您的问题是什么?我们不会为您实施此系统。
  • @tripleee,我已经更新了这个问题,但基本上我需要知道是否有任何连接器可以将电子邮件吸入 Spark 以进行分布式大规模处理。如果是,它们是什么,如果不是,那么讨论最佳行动方案。
  • 电子邮件本身一个“消息队列系统”。您可以轻松地挑选出一条 MIME 消息,例如munpack;另见superuser.com/questions/406125/…
  • @tripleee,我已经看到了这些,但它们就像第二/第三最佳选择,因为它涉及多个处理步骤。理想情况下,它应该像一个服务器,持久保存到 Spark 可读的某个存储或将其传递给 Spark 流。

标签: apache-spark message-queue apache-kafka spark-streaming procmail


【解决方案1】:

MailgunSendgrid 传入的电子邮件处理非常简单,以至于我几乎无法想象对于一个新的、特别大的系统有任何替代方案。我只和他们一起玩,但我的印象是,我与电子邮件相关的任何实际或潜在(数十亿封电子邮件)问题都得到了很好的解决。与 Spark 无关,这些系统只是将电子邮件内容作为 http POST 请求发送到您提供的 URL。

Sendgrid 过去常常错误地解析编码,他们的支持忽略了我的电子邮件并最终删除了一张票而没有解决问题。无论原始编码如何,Mailgun 始终返回 UTF8。手动 MIME 解析本身就是一项艰巨的任务,因此最好使用现有的解决方案,除非电子邮件是由计算机生成的。但即便如此,IaaS 服务也比开发人员时间便宜得多。

【讨论】:

  • 这是一个不错的选择,但由于严格的数据安全要求,我们希望将其托管在内部。
猜你喜欢
  • 2015-05-20
  • 2018-12-28
  • 1970-01-01
  • 2010-12-08
  • 2012-08-18
  • 2021-11-13
  • 2017-11-01
  • 2011-11-12
  • 2011-09-18
相关资源
最近更新 更多