基本问题是尝试使用Spark生成数据,然后在内部处理数据。例如,我有一个程序,它会生成“行”数据a-我是否可以利用Spark在工作节点之间并行化该工作,并让它们各自返回底层存储?我想使用Spark的原因是它似乎是一个非常流行的框架,我知道这个请求有点超出了Spark应该提供的功能范围。然而,MapReduce或Storm的替代品已经非常陈旧,不再有太多的支持了。我有一种感觉,必须有一种方法来做到这一点,有没有人试图利用Spark在这种方式?
j8ag8udp1#
老实说,我不认为仅仅因为Spark很受欢迎就采用它是一个正确的决定。而且,从为什么这个问题需要一个用于分布式数据处理的框架(这沿着着巨大的协调开销)的问题来看,这并不明显。关键的考虑因素应该是下一步如何处理生成的数据。如果只是将数据立即转储到数据存储中,我真的不建议使用Spark,特别是如果您手头没有必要的基础设施(Spark集群)。相反,编写一个简单的程序来生成数据,然后在现代资源调度器(如Kubernetes)上运行它,并根据需要扩展和运行尽可能多的示例。如果你真的想使用Spark来完成这个任务(并且不必要地消耗资源),这并不困难。创建一个分布式的“种子”数据集/流,然后简单地使用flatMap。使用flatMap,你可以为每个种子输入行生成任意多的新行(显然受到可用内存的限制)。
flatMap
1条答案
按热度按时间j8ag8udp1#
老实说,我不认为仅仅因为Spark很受欢迎就采用它是一个正确的决定。而且,从为什么这个问题需要一个用于分布式数据处理的框架(这沿着着巨大的协调开销)的问题来看,这并不明显。
关键的考虑因素应该是下一步如何处理生成的数据。如果只是将数据立即转储到数据存储中,我真的不建议使用Spark,特别是如果您手头没有必要的基础设施(Spark集群)。
相反,编写一个简单的程序来生成数据,然后在现代资源调度器(如Kubernetes)上运行它,并根据需要扩展和运行尽可能多的示例。
如果你真的想使用Spark来完成这个任务(并且不必要地消耗资源),这并不困难。创建一个分布式的“种子”数据集/流,然后简单地使用
flatMap
。使用flatMap
,你可以为每个种子输入行生成任意多的新行(显然受到可用内存的限制)。