我需要将来自多个本地数据库的客户数据同步到云中。在第二步中,需要清理的客户数据才能删除(不同类型(的重复项。基于这些清洁数据,我需要进行一些数据分析。
为了实现此目标,我正在寻找可以使用的开源框架或云解决方案。我研究了Apache Apex和Apache Kafka,但我不确定这些是否正确。
您能给我一个提示您将使用哪些框架来完成此类任务?
从我对顶点的快速阅读中,它需要在耦合下与更多的依赖项下的hadoop hadoop。
另一方面,kafka用于传输消息(它具有其他API,例如流和连接,我不熟悉它(。
IM当前使用KAFKA从客户端系统实时进行日志文件。开箱即用的卡夫卡实际上只提供火灾,忘记语义。我不得不添加一点才能使其精确地传递语义(Kafka 0.11.0应该解决此问题(。
总的来说,认为Kafka是一个更低的解决方案,具有带有队列的逻辑消息域,并且我从Apex上浏览了一个更重的包装库,其中有很多东西可以探索。
kafka可以让您使用其消费者API选择您选择的基本分析系统。
这个问题非常通用,但是我会尝试概述一些不同的方案,因为这里有许多参数。其中之一是成本,在云上它可以快速建立。当然,数据的大小也很重要。
这些是您应该考虑的几件事:
- 批处理与流媒体:进行更新连续流动,或者按需/定期运行该过程(后者而不是以前的声音(
- 需要什么延迟?也就是说,在系统中传播的最大更新是多少?回答这个问题会影响问题1(
- 我们在谈论多少数据?如果您的尺寸,tbyte或pbyte?不同的工具具有不同的"最大高度"
- 以及哪种格式?您有文本文件,还是从关系DB中提取?
- 在平原SQL中清洁和涂抹可能很棘手。您打算使用哪些语言/工具来执行该部分?根据问题3(,数据大小通常需要通过ID加入,这是在密钥值存储中恒定时间进行的,但是在大多数其他数据系统(Spark,Hadoop,hadoop,spark,hadoop,offer(中需要一种(通常是O(nlogn((等(
所以,当您思考所有这些问题时,如果不确定,我建议您使用弹性解决方案开始云工作,也就是说,当您去付费而不是在云上设置整个簇,可能很快变得昂贵。
您可以迅速开火的一种云解决方案是亚马逊雅典娜(https://aws.amazon.com/athena/(。您可以将数据转储到S3中,该数据由Athena阅读,您只需付款,因此不使用它时就不会付款。它基于Apache Presto,因此您可以基本上使用SQL编写整个系统。
否则,您可以将弹性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(。这取决于您最适合的语言/技术。此外,还有Google(BigData等(和Microsoft(Azure(的类似产品。
是的,您可以将Apache Apex用于用例。Apache Apex受Apache Malhar的支持,可以帮助您快速构建应用程序以使用JDBC输入操作员加载数据,然后将其存储到您的云存储中(可能是S3(,或者您可以在将其存储到任何水槽之前进行删除。它还为DEDUP操作员提供此类操作。但是,如先前的答复中所述,Apex确实需要Hadoop才能发挥作用。