当前位置: 首页 > 知识库问答 >
问题:

对于PySpark来说,这是一个合适的用例吗?气流?阿帕奇光束?

鲁阳焱
2023-03-14

数据集不适合内存,管道目前依赖于在每个阶段将对象pickl/dePickling到和从磁盘上。这很有效,但速度很慢,是时候转向一个更可伸缩的分布式体系结构了。

理想情况下,我希望能够写出这样的内容:

distributed_list = read_objects()
for transform in transformations:
    distributed_list = transform(distributed_list)
custom_dataset_object = convert_to_dataset(distributed_list)
custom_dataset_object.save()

在这里,整个处理流被分解成一个DAG并在集群中并行化。

对于更有经验的大数据工程师来说,这些评价是否准确?这些工具中的一个(或其他一些)对我的工作最好吗?

共有1个答案

谭卜鹰
2023-03-14

这真的取决于你想要实现什么。例如,PySpark不是气流的替代品。你可以两个都用,也可以一个都不用。您的气流操作员(工作单元)可以简单到“调用这个PySpark作业”。

气流不是关于加工步骤,而是管道本身。如果您想要跟踪、聚合日志处理、管道的SLA、条件处理步骤、回填控制、更复杂的调度等等,那么就需要使用它。

气流特别闪耀如果你想有动态管道。编辑几个YAML文件就可以了,您的管道现在有几个额外的步骤来计算一个额外的数据块,历史地回填并自动地每小时更新一次。当然,这不是免费的,您将实现将配置转换为运算符的逻辑。

Airflow可以是您选择的编排机制,但您可以决定通过一系列cron作业来实现相同的机制。不用出汗。

选择处理引擎是另一种问题。Spark是现在的舞会女王,采摘Apache Beam也不是在逃避Spark。它可以在Spark和Flink上运行(批处理和流式执行引擎)。但Spark的流处理能力也越来越受欢迎。在PySpark和Beam之间进行选择并不是一个可伸缩性问题,而是您希望将自己投入到哪种技术锁定中。

我建议您选择经过试验确认性能优于当前引擎的处理引擎。有时运行命令行实用程序可能比分布式作业更快。可伸缩性是一个您可以边走边解决的问题,因为如果没有实验,您通常会得到过度设计的系统。

 类似资料:
  • Apache Kafka:分布式消息传递系统 Apache Storm:实时消息处理 我们如何在实时数据管道中使用这两种技术来处理事件数据? 在实时数据管道方面,我觉得两者做的工作是一样的。如何在数据管道上同时使用这两种技术?

  • 我正在使用Flink从Apache Pulsar读取数据。我在pulsar中有一个分区主题,有8个分区。在本主题中,我生成了1000条消息,分布在8个分区中。我的笔记本电脑中有8个内核,因此我有8个子任务(默认情况下,并行度=#个内核)。在执行Eclipse中的代码后,我打开了Flink UI,发现一些子任务没有收到任何记录(空闲)。我希望所有8个子任务都能得到利用(我希望每个子任务都映射到我的主

  • 我们需要的是直接的API来设置和使用集群消息队列。我们最初的计划是使用Camel在集群JMS或ActiveMQ队列上进行消费/生产。Kafka如何使这项任务变得更容易?在任何一种情况下,应用程序本身都将在WebLogic服务器上运行。 消息传递将是点对点类型,其中有多个相同服务的实例在运行,但根据负载平衡策略,只有一个实例应该处理消息并发出结果。消息队列也是群集的,因此服务实例或队列实例的失败都不

  • 目前我正在研究Apache spark和Apache ignite框架。 这篇文章介绍了它们之间的一些原则差异,但我意识到我仍然不理解它们的目的。 我的意思是,哪一个问题更容易产生火花而不是点燃,反之亦然?

  • 我正在做一个学术项目,涉及传感器的流数据。我已经包围了苍鹭(Storm的接班人)和尼菲。两者都支持内置背压,这对我的项目至关重要。Apache Nifi和Heron之间的主要区别是什么? 哪款更适合物联网应用?

  • 我正试图找出这两种设置之间的区别。大小和缓冲区。Kafka制作人的记忆。 据我所知。大小:这是可以发送的批次的最大大小。 文档描述了缓冲区。memory as:生产者可以用来缓冲等待发送的记录的内存字节。 我不明白这两者之间的区别。有人能解释一下吗? 谢啦