我需要将客户数据从多个本地数据库同步到云中。在第二步中,那里的客户数据需要进行一些清理以删除(不同类型的)重复项。基于这些清理过的数据,我需要进行一些数据分析。
为了实现这个目标,我正在寻找可以使用的开源框架或云解决方案。我查看了 Apache Apex 和 Apache Kafka,但我不确定这些是否是正确的解决方案。
你能告诉我你会使用哪些框架来完成这样的任务吗?
我需要将客户数据从多个本地数据库同步到云中。在第二步中,那里的客户数据需要进行一些清理以删除(不同类型的)重复项。基于这些清理过的数据,我需要进行一些数据分析。
为了实现这个目标,我正在寻找可以使用的开源框架或云解决方案。我查看了 Apache Apex 和 Apache Kafka,但我不确定这些是否是正确的解决方案。
你能告诉我你会使用哪些框架来完成这样的任务吗?
这个问题非常笼统,但我会尝试概述一些不同的场景,因为这里有很多参数。其中之一是成本,它可以在云上快速建立。当然,数据的大小也很重要。
这些是您应该考虑的几件事:
因此,当您思考所有这些问题时,如果您不确定,我建议您使用弹性解决方案开始您的云工作,即按需付费而不是在云上设置整个集群,这可能很快成为昂贵的。
您可以快速启动的一种云解决方案是 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)也有类似的产品。
从我对 APEX 的快速阅读来看,它需要 Hadoop 在下面耦合到比你早期可能想要的更多的依赖项。
另一方面,Kafka 用于传输消息(它还有其他 API,例如我不熟悉的流和连接)。
我目前使用 Kafka 从客户端系统实时流式传输日志文件。开箱即用的卡夫卡真的只提供了火而忘记语义。我不得不添加一些内容以使其成为一次交付语义(Kafka 0.11.0 应该解决这个问题)。
总的来说,认为 KAFKA 是一个更底层的解决方案,它具有带有队列的逻辑消息域,并且从我略读到 APEX 是一个更重的打包库,有更多的东西需要探索。
Kafka 将允许您使用他们的消费者 API 切换您选择的底层分析系统。
是的,您可以将 Apache Apex 用于您的用例。Apache Malhar 支持 Apache Apex,它可以帮助您快速构建应用程序以使用 JDBC 输入运算符加载数据,然后将其存储到您的云存储(可能是 S3),或者您可以在将其存储到任何接收器之前进行重复数据删除。它还支持用于此类操作的 Dedup 运算符。但正如之前的回复中提到的,Apex 确实需要底层的 Hadoop 才能运行。