我需要将多个内部数据库中的客户数据同步到云中。在第二步中,那里的客户数据需要一些清理,以便删除(不同类型的)重复数据。基于这些清理过的数据,我需要做一些数据分析。为了实现这个目标,我正在寻找一个开源框架或云解决方案。我查看了apacheapex和apachekafka,但我不确定这些是否是正确的解决方案。你能给我一个提示,你会用什么样的框架来完成这样的任务?
p4rjhz4m1#
这个问题非常一般,但我将尝试概述几个不同的场景,因为这里有许多参数。其中之一就是成本,它可以在云端快速累积。当然,数据的大小也很重要。你应该考虑以下几点:批处理与流式处理:更新是否连续进行,或者进程是否按需/定期运行(听起来是后者而不是前者)需要多少延迟?也就是说,更新在系统中传播的最长时间是多少?对这个问题的回答(问题1)我们在谈论多少数据?如果你的大小是千兆字节,是兆字节还是兆字节?不同的工具有不同的“最大高度”什么格式?你有文本文件,还是从关系数据库中提取?在纯sql中,清除和重复数据可能很棘手。你打算用什么语言/工具来完成这一部分?根据问题3),数据大小,重复数据消除通常需要按id连接,这在键值存储中以固定时间完成,但在大多数其他数据系统(spark、hadoop等)中需要排序(通常为o(nlogn))所以,当你思考所有这些问题时,如果你不确定,我建议你从一个弹性的解决方案开始你的云工作,也就是说,现收现付,而不是在云上建立整个集群,这可能会很快变得昂贵。一个可以快速启动的云解决方案是amazon athena(https://aws.amazon.com/athena/). 您可以将数据转储到s3中,雅典娜在s3中读取数据,您只需为每个查询付费,因此在不使用时不必付费。它基于ApachePresto,因此您可以使用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). 这取决于你最熟悉的语言/技术。此外,谷歌(bigdata等)和微软(azure)也有类似的产品。
juud5qan2#
是的,您可以将apacheapex用于您的用例。apacheapex受apachemalhar支持,它可以帮助您快速构建应用程序,使用jdbc输入操作符加载数据,然后将其存储到云存储(可能是s3),或者您可以在将数据存储到任何接收器之前执行重复数据消除。它还支持对此类操作执行重复数据消除操作。但正如前面的回复中所提到的,apex确实需要hadoop来运行。
hlswsv353#
从我对apex的快速阅读来看,它需要hadoop底层耦合到更多的依赖项,这可能比您早期想要的要多。另一方面,kafka用于传输消息(它还有其他api,比如streams和connect,我不太熟悉)。我目前使用Kafka流实时从客户端系统的日志文件。开箱即用的Kafka实际上只提供了“火与忘”的语义。我不得不添加一些东西,使它成为一个完全一次性的交付语义(kafka0.11.0应该可以解决这个问题)。总的来说,kafka是一个带有队列的逻辑消息域的较低级别的解决方案,而apex是一个较重的打包库,有很多东西需要探索。Kafka将允许您切换出您选择的底层分析系统与他们的消费api。
3条答案
按热度按时间p4rjhz4m1#
这个问题非常一般,但我将尝试概述几个不同的场景,因为这里有许多参数。其中之一就是成本,它可以在云端快速累积。当然,数据的大小也很重要。
你应该考虑以下几点:
批处理与流式处理:更新是否连续进行,或者进程是否按需/定期运行(听起来是后者而不是前者)
需要多少延迟?也就是说,更新在系统中传播的最长时间是多少?对这个问题的回答(问题1)
我们在谈论多少数据?如果你的大小是千兆字节,是兆字节还是兆字节?不同的工具有不同的“最大高度”
什么格式?你有文本文件,还是从关系数据库中提取?
在纯sql中,清除和重复数据可能很棘手。你打算用什么语言/工具来完成这一部分?根据问题3),数据大小,重复数据消除通常需要按id连接,这在键值存储中以固定时间完成,但在大多数其他数据系统(spark、hadoop等)中需要排序(通常为o(nlogn))
所以,当你思考所有这些问题时,如果你不确定,我建议你从一个弹性的解决方案开始你的云工作,也就是说,现收现付,而不是在云上建立整个集群,这可能会很快变得昂贵。
一个可以快速启动的云解决方案是amazon athena(https://aws.amazon.com/athena/). 您可以将数据转储到s3中,雅典娜在s3中读取数据,您只需为每个查询付费,因此在不使用时不必付费。它基于ApachePresto,因此您可以使用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). 这取决于你最熟悉的语言/技术。此外,谷歌(bigdata等)和微软(azure)也有类似的产品。
juud5qan2#
是的,您可以将apacheapex用于您的用例。apacheapex受apachemalhar支持,它可以帮助您快速构建应用程序,使用jdbc输入操作符加载数据,然后将其存储到云存储(可能是s3),或者您可以在将数据存储到任何接收器之前执行重复数据消除。它还支持对此类操作执行重复数据消除操作。但正如前面的回复中所提到的,apex确实需要hadoop来运行。
hlswsv353#
从我对apex的快速阅读来看,它需要hadoop底层耦合到更多的依赖项,这可能比您早期想要的要多。
另一方面,kafka用于传输消息(它还有其他api,比如streams和connect,我不太熟悉)。
我目前使用Kafka流实时从客户端系统的日志文件。开箱即用的Kafka实际上只提供了“火与忘”的语义。我不得不添加一些东西,使它成为一个完全一次性的交付语义(kafka0.11.0应该可以解决这个问题)。
总的来说,kafka是一个带有队列的逻辑消息域的较低级别的解决方案,而apex是一个较重的打包库,有很多东西需要探索。
Kafka将允许您切换出您选择的底层分析系统与他们的消费api。