- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个复杂的数据处理管道,目前在单台机器上用 Python 实现。
管道是围绕处理属于一系列实现文档、页面、单词等的自定义类的对象而构建的。该管道中的大多数操作都是令人尴尬地并行的——它们处理单个文档——尽管有一些需要收集整个集合的统计。
数据集不适合内存,并且管道当前在每个阶段都依赖于磁盘上的酸洗/反酸洗对象。这可行,但速度很慢,是时候转向更具可扩展性的分布式架构了。
理想情况下我希望能够写出这样的东西:
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 并在集群中并行化。
我一直在为此目的评估pyspark,但不确定它是否是完成该任务的正确工具,因为我没有处理带有大量方法的复杂自定义对象,而不是简单的数据类型.
Apache Beam 的 DoFns 看起来可能会实现我正在寻找的目标,但它似乎并没有被广泛采用,我想尽可能使用最便携的技术。
我也可以将其分解为一系列Airflow工作,但这比我想要的更加手动和脆弱。
对于更有经验的大数据工程师来说,这些评估是否准确?这些工具之一(或其他工具)最适合我的工作吗?
最佳答案
这实际上取决于您想要实现的目标。例如,PySpark 不能替代 Airflow。您可以两者都使用,也可以都不使用。您的 Airflow Operator(工作单元)可以像“调用此 PySpark 作业”一样简单。
Airflow 与处理步骤无关,而是与管道本身有关。如果您需要可追溯性、聚合日志处理、管道 SLA、条件处理步骤、回填控制、更复杂的调度等,您将需要使用它。
如果您想要动态管道,Airflow 会特别出色。编辑几个 YAML 文件,然后您的管道现在有一些额外的步骤来计算一个额外的数据片段,回填历史记录并自动每小时更新一次。当然,这不是免费的,您将实现将配置转变为运算符的逻辑。
Airflow 可以是您选择的编排机制,但您可以决定通过一堆 cron 作业来实现相同的目的。没有汗水。
选择处理引擎是另一类问题。如今,Spark 已成为舞会女王,选择 Apache Beam 也不会逃避 Spark。它可以在 Spark 和 Flink 上运行(批处理与流式执行引擎)。但 Spark 的流处理能力也受到关注。在 PySpark 和 Beam 之间进行选择并不是可扩展性问题,而是您想要致力于哪种技术锁定。
我建议您选择经过实验确认性能优于当前引擎的处理引擎。 Sometimes running a command line utility can be faster than distributed jobs 。可扩展性是您需要随时解决的问题,因为如果不进行实验,您通常会得到过度设计的系统。
关于python - 这是 PySpark 的合适用例吗?空 Airflow 动? Apache 光束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49682576/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!