我在看报纸 Apache Crunch documentation
我发现下面这句话:
数据是以流方式从文件系统读入的,因此不需要将pcollection的内容放入内存中,就可以使用物化将其读入客户机。
我想知道什么 read in from the filesystem in a streaming fashion
如果有人能告诉我阅读数据的方式与其他方式有什么不同,我将不胜感激。
我想说这个概念也适用于其他工具,比如spark。
我在看报纸 Apache Crunch documentation
我发现下面这句话:
数据是以流方式从文件系统读入的,因此不需要将pcollection的内容放入内存中,就可以使用物化将其读入客户机。
我想知道什么 read in from the filesystem in a streaming fashion
如果有人能告诉我阅读数据的方式与其他方式有什么不同,我将不胜感激。
我想说这个概念也适用于其他工具,比如spark。
1条答案
按热度按时间7z5jn7bk1#
假设您的文件系统中有一个英语文件,您需要将其翻译为德语。你基本上有两个选择。您可以将整个英文文件作为一个大批加载到内存中,一次翻译整个批,然后将新的德语批写回文件系统。
或者你可以一行一行地做。用英语读第一行;翻译成德语并写出新文件;用英语读第二行,翻译成德语并附在新文件中;等等。
后一种方法类似于apachecrunch文档中描述的流方法。
这个
PCollection
就是要把RDD
是激发——框架的基本分布式数据抽象,但crunch在更高的抽象级别上运行。它试图为跨技术的数据管道提供一个很好的api。例如,您的数据可能在您有可靠查询的配置单元中;这些查询的输出作为在hbase中存储数据的遗留mapreduce作业的输入;这些数据由spark的mllib机器学习库进行分析,结果最终交给cassandra。crunch试图通过管道将所有这些连接起来
PCollection
抽象,但它的流方法意味着您不必等到一个作业完成后再开始下一个作业。与逐行文件转换一样,您一次处理一个位,并在管道的每个阶段移动每个位,而不是成批进行。你是对的,流的概念适用于spark这样的工具(最明显的是spark流),但是正如我提到的,spark的抽象级别比crunch低。星火作业可能只是危机管道的一部分。但流媒体确实是一个强大的范例。它是jay kreps(以前是linkedin的,现在是confluent的,他是apache kafka的先驱)设计的kappa架构的基础,作为nathan marz(以前是twitter的)设计的基于批处理的lambda架构的更简单但更强大的替代。
最后,在抽象级别(crunch高于spark)和一次操作一批或一点一点操作之间进行选择。