【问题标题】:What does read data as "streaming fashion" mean?将数据读取为“流媒体时尚”是什么意思?
【发布时间】:2017-04-27 01:31:13
【问题描述】:

我在看Apache Crunch documentation,发现下面这句话:

数据是以流的方式从文件系统中读取的,所以 不需要 PCollection 的内容适合内存 使用物化将其读入客户端。

我想知道read in from the filesystem in a streaming fashion 的含义,如果有人能告诉我与其他读取数据的方式有什么区别,我将不胜感激。

我想说这个概念也适用于其他工具,例如 Spark。

【问题讨论】:

    标签: hadoop apache-spark hdfs hadoop-streaming apache-crunch


    【解决方案1】:

    假设您的文件系统上有一个英文文件,您需要将其翻译成德语。你基本上有两个选择。您可以将整个英文文件作为一个大批处理加载到内存中,一次翻译整个批处理,然后将新的德语批处理写回文件系统。

    或者你可以逐行进行。用英文阅读第一行;翻译成德语并写入新文件;阅读第二行英文并翻译成德文并附加到新文件中;等等。

    后一种方法类似于 Apache Crunch 文档中描述的流方法。

    PCollection 之于 Crunch 就像 RDD 之于 Spark——框架的基本分布式数据抽象,但 Crunch 在更高的抽象级别上运行。它旨在为跨技术的数据管道提供一个很好的 API。

    例如,您可能在 Hive 中拥有您可以可靠查询的数据;这些查询的输出用作在 HBase 中存储数据的传统 MapReduce 作业的输入;这些数据由 Spark 的 MLLib 机器学习库进行分析,结果最终交给 Cassandra。 Crunch 试图通过PCollection 抽象将所有这些连接在一起,但它的流式方法意味着您不必在下一个工作开始之前等待一个工作完成。就像逐行文件翻译一样,您一次处理一个位,并将每个位移动到管道的每个阶段——而不是分批完成。

    您说得对,流的概念适用于 Spark 之类的工具(最明显的是 Spark Streaming),但正如我所提到的,Spark 的工作抽象级别比 Crunch 低。 Spark 作业可能只是 Crunch 管道的一部分。但流媒体确实是一个强大的范例。它是由 Jay Kreps(以前是 LinkedIn,现在是 Confluent,他是 Apache Kafka 的先驱)设计的 Kappa Architecture 的基础,作为对 Nathan Marz(以前的推特)。

    最终,选择是在抽象级别(Crunch 高于 Spark)和一次操作一批或逐位操作之间进行选择。

    【讨论】:

      猜你喜欢
      • 2020-12-22
      • 2018-09-11
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 2011-03-11
      • 2020-11-07
      • 2014-06-11
      • 2017-12-04
      相关资源
      最近更新 更多