1

我需要将客户数据从多个本地数据库同步到云中。在第二步中,那里的客户数据需要进行一些清理以删除(不同类型的)重复项。基于这些清理过的数据,我需要进行一些数据分析。

为了实现这个目标,我正在寻找可以使用的开源框架或云解决方案。我查看了 Apache Apex 和 Apache Kafka,但我不确定这些是否是正确的解决方案。

你能告诉我你会使用哪些框架来完成这样的任务吗?

4

3 回答 3

1

这个问题非常笼统,但我会尝试概述一些不同的场景,因为这里有很多参数。其中之一是成本,它可以在云上快速建立。当然,数据的大小也很重要。

这些是您应该考虑的几件事:

  1. 批处理与流式传输:更新是否连续流动,或者该过程按需/定期运行(听起来是后者而不是前者)
  2. 所需的延迟是多少?也就是说,更新通过系统传播的最长时间是多少?对这个问题的回答会影响问题 1)
  3. 我们在谈论多少数据?如果您增加了 Gbyte 大小,Tbyte 还是 Pbyte ?不同的工具有不同的“最大高度”
  4. 什么格式?你有文本文件,还是从关系数据库中提取?
  5. 在纯 SQL 中,清理和重复数据删除可能很棘手。你打算用什么语言/工具来做那部分?根据问题 3)、数据大小、重复数据删除通常需要按 ID 进行连接,这在键值存储中以恒定时间完成,但在大多数其他数据系统(spark、hadoop、 ETC)

因此,当您思考所有这些问题时,如果您不确定,我建议您使用弹性解决方案开始您的云工作,即按需付费而不是在云上设置整个集群,这可能很快成为昂贵的。

您可以快速启动的一种云解决方案是 amazon athena ( https://aws.amazon.com/athena/ )。您可以将数据转储到 S3 中,由 Athena 读取,您只需为每个查询付费,因此在不使用时无需付费。它基于 Apache Presto,因此您可以使用基本的 SQL 编写整个系统。

否则,您可以将 Elastic Mapreduce 与 Hive ( http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive.html ) 一起使用。或 Spark ( http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark.html )。这取决于您最熟悉的语言/技术。此外,谷歌(BigData 等)和微软(Azure)也有类似的产品。

于 2017-06-23T23:51:49.833 回答
1

从我对 APEX 的快速阅读来看,它需要 Hadoop 在下面耦合到比你早期可能想要的更多的依赖项。

另一方面,Kafka 用于传输消息(它还有其他 API,例如我不熟悉的流和连接)。

我目前使用 Kafka 从客户端系统实时流式传输日志文件。开箱即用的卡夫卡真的只提供了火而忘记语义。我不得不添加一些内容以使其成为一次交付语义(Kafka 0.11.0 应该解决这个问题)。

总的来说,认为 KAFKA 是一个更底层的解决方案,它具有带有队列的逻辑消息域,并且从我略读到 APEX 是一个更重的打包库,有更多的东西需要探索。

Kafka 将允许您使用他们的消费者 API 切换您选择的底层分析系统。

于 2017-06-23T21:53:05.177 回答
0

是的,您可以将 Apache Apex 用于您的用例。Apache Malhar 支持 Apache Apex,它可以帮助您快速构建应用程序以使用 JDBC 输入运算符加载数据,然后将其存储到您的云存储(可能是 S3),或者您可以在将其存储到任何接收器之前进行重复数据删除。它还支持用于此类操作的 Dedup 运算符。但正如之前的回复中提到的,Apex 确实需要底层的 Hadoop 才能运行。

于 2017-07-04T12:11:05.063 回答