read data as "streaming fashion" 是什么意思?
What does read data as "streaming fashion" mean?
我在阅读 Apache Crunch documentation
时发现了以下句子:
Data is read in from the filesystem in a streaming fashion, so there
is no requirement for the contents of the PCollection to fit in memory
for it to be read into the client using materialization.
我想知道 read in from the filesystem in a streaming fashion
是什么意思,如果有人能告诉我与其他读取数据的方法有什么区别,我将不胜感激。
我想说这个概念也适用于其他工具,例如 Spark。
假设您的文件系统上有一个英文文件需要翻译成德文。你基本上有两个选择。您可以将整个英文文件作为一大批加载到内存中,一次翻译整个批次,然后将新的德文批次写回文件系统。
或您可以逐行进行。阅读英文第一行;翻译成德语并写入新文件;用英文阅读第二行并翻译成德文并附加到新文件中;等等。
后一种方法类似于 Apache Crunch 文档中描述的流方法。
PCollection
之于 Crunch 就像 RDD
之于 Spark——框架的基本分布式数据抽象,但 Crunch 在更高的抽象层次上运行。它旨在为跨技术的数据管道提供一个很好的 API。
例如,您可能在 Hive 中拥有您的数据,您可以对其进行可靠的查询;这些查询的输出作为在 HBase 中存储数据的遗留 MapReduce 作业的输入;这些数据由 Spark 的 MLLib 机器学习库进行分析,结果最终发送给 Cassandra。 Crunch 试图通过 PCollection
抽象将所有这些通过管道连接在一起,但它的流式处理方法意味着您不必在下一个工作开始之前等待一个工作完成。就像逐行文件翻译一样,您一次处理一点,然后将每一位移动到管道的每个阶段——而不是分批进行。
你说得对,流式处理的概念适用于像 Spark 这样的工具(最明显的是 Spark Streaming),但正如我所提到的,Spark 的工作抽象级别低于 Crunch。 Spark 作业可能只是 Crunch 管道的一部分。但流式传输确实是一种强大的范例。它是 Nathan Marz(以前的 Twitter)设计的 Kappa Architecture devised by Jay Kreps (formerly of LinkedIn and now of Confluent, who pioneers Apache Kafka) as a simpler but more powerful alternative to the batch-based Lambda Architecture 的基础。
最后,选择是在抽象级别(Crunch 比 Spark 更高)和一次操作一批还是逐位操作之间。
我在阅读 Apache Crunch documentation
时发现了以下句子:
Data is read in from the filesystem in a streaming fashion, so there is no requirement for the contents of the PCollection to fit in memory for it to be read into the client using materialization.
我想知道 read in from the filesystem in a streaming fashion
是什么意思,如果有人能告诉我与其他读取数据的方法有什么区别,我将不胜感激。
我想说这个概念也适用于其他工具,例如 Spark。
假设您的文件系统上有一个英文文件需要翻译成德文。你基本上有两个选择。您可以将整个英文文件作为一大批加载到内存中,一次翻译整个批次,然后将新的德文批次写回文件系统。
或您可以逐行进行。阅读英文第一行;翻译成德语并写入新文件;用英文阅读第二行并翻译成德文并附加到新文件中;等等。
后一种方法类似于 Apache Crunch 文档中描述的流方法。
PCollection
之于 Crunch 就像 RDD
之于 Spark——框架的基本分布式数据抽象,但 Crunch 在更高的抽象层次上运行。它旨在为跨技术的数据管道提供一个很好的 API。
例如,您可能在 Hive 中拥有您的数据,您可以对其进行可靠的查询;这些查询的输出作为在 HBase 中存储数据的遗留 MapReduce 作业的输入;这些数据由 Spark 的 MLLib 机器学习库进行分析,结果最终发送给 Cassandra。 Crunch 试图通过 PCollection
抽象将所有这些通过管道连接在一起,但它的流式处理方法意味着您不必在下一个工作开始之前等待一个工作完成。就像逐行文件翻译一样,您一次处理一点,然后将每一位移动到管道的每个阶段——而不是分批进行。
你说得对,流式处理的概念适用于像 Spark 这样的工具(最明显的是 Spark Streaming),但正如我所提到的,Spark 的工作抽象级别低于 Crunch。 Spark 作业可能只是 Crunch 管道的一部分。但流式传输确实是一种强大的范例。它是 Nathan Marz(以前的 Twitter)设计的 Kappa Architecture devised by Jay Kreps (formerly of LinkedIn and now of Confluent, who pioneers Apache Kafka) as a simpler but more powerful alternative to the batch-based Lambda Architecture 的基础。
最后,选择是在抽象级别(Crunch 比 Spark 更高)和一次操作一批还是逐位操作之间。