整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

16.5.3 Tap、Scheme 和 Flow

hadoop 花牛 20℃ 0评论

在前面的几个图中,我们多次提到源数据(source)和目标数据(sink)。在 Cascading系统中,所有的数据都是读自或写入Tap类实例,但是它们都是 通过Scheme对象被转换成最取自元组实例对象。

• Tap Tap类负责如何访问数据以及从哪个位置访问数据。例如, 判断数据是存于HDFS还是存于本地?在Amazon S3中,还是跨 HTTP协议进行访问?

• Scheme Scheme类负责读取原始数据并把它们转换成元组格式或把元组数据写入原始数据格式文件,这里的原始数据可以是文本 行、Hadoop二进制的序列化文件或是一些专用格式数据。

注意,Tap类对象不是管道装配线的一部分,因此它们不是Pipe类型。

但是当Tap对象在集群上变得可执行的时候,它们就和管道装配线关联到 一起。当一个管道装配线与必要的源和目标数据Tap实例关联一起后,我 们就得到一个Flow对象。Flow对象是在管道处理流程与指定数量的源及 目标数据Tap关联时创建的,而Tap对象的功能是输出或获取管道装配线 期望的字段名。就是说,如果Tap对象输出一个具有字段名“line”的元组 (通过读取HDFS上的文件数据),那么这个管道装配线头部必须也希望输入 时字段名是“line”的数据值。否则,连接管道处理流程和Tap的处理程序 会立刻失败并报错。

因此,管道装配线实际上就是数据处理定义,并且它们本身不是“可执 行”的。在它们可以在集群上运行之前,必须^接到源和目标Tap对象。 这种把Tap和管道装配线分开处理的特性也是Cascading系统功能强大的原因之一。

如果把管道装配线想象成Java类,那么Flow就像;lava对象实例(参见图 16-17)。也就是说,在同一个应用程序里面,同样的管道装配线可以被实例 化很多次从而形成新的Flow,不用担心它们之间会有任何干扰。如此一 来,管道装配线就可以像标准Java库一样创建和共享。

转载请注明:全栈大数据 » 16.5.3 Tap、Scheme 和 Flow

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址