数仓工具—Hive streaming(10)

亦凉 2022-12-30 14:51 220阅读 0赞

streaming

HIVE是通过利用或扩展Hadoop的组件功能来运行的,常见的抽象有InputFormat、OutputFormat、Mapper、Reducer,还包含一些自己的抽象接口,例如SerializerDeserializer(SerDe)、用户自定义函数(UDF)和StorageHandlers。这些组件都是java组件,不过hive将这些复杂的底层实现隐藏起来了,而提供给用户通过SQL语句执行的方式,而不是使用java代码

streaming 提供了另一种处理数据的方式。在streaming job中,Hadoop StreamingAPI会为外部进程开启一个I/O管道。然后数据会被传给这个进程,然后数据从标准输入中读取数据,然后通过标准输出来写结果数据,最后返回到Streaming API job。尽管HIVE并没有直接使用Hadoop的StreamingAPI,不过他们的工作方式是一致的。这种管道计算模型对于Unix操作系统以及其衍生系统,如Linux和Mac OS X的用户来说是非常熟悉的。

Streaming的执行效率通常会比对应的编写UDF或改写InputFormat对象的方式要低。管道中的序列化和反序列化数据通常是低效的。而且以通常的方式很难调试整个程序。不过,对于快速原型设计和支持非java编写的已有的代码是非常有用的。对于那些不想写java代码的HIVE用户来说,这也是一个高效的方式

HIVE中提供了多个语法来使用Streaming,包括:MAP()、REDUCE()、TRANSFORM(),你可以在sql 中使用一些脚本去处理一些任务,脚本分为mapper 端的脚本和reducer 端的脚本,MAP()实际上并非可以强制在map阶段执行Streaming,同样REDUCE(

发表评论

表情:
评论列表 (有 0 条评论,220人围观)

还没有评论,来说两句吧...

相关阅读

    相关 工具Hive架构服务(16)

    Hive 服务详解 前面我们学习[数仓工具—Hive的架构设计][Hive] 的时候学到了很多概念,像元数据服务什么的,其实架构设计里的每一项都对应的是一种服务或者是一个

    相关 工具Hive动态分区(6)

    动态分区 前面我们学习了Hive 的分区分桶表,我们讲到了分区表中的分区字段可以是我们指定的字段——静态分区,也可以是数据表中的某些字段,这个怎么理解呢,例如我们有一个网