与使用Java相比,hbase / hadoop中的流作业是否会丢失任何功能?

抱歉,这是一个基本问题.我正在阅读有关hbase和学习的书,但该书中(以及在线的)大多数示例都倾向于使用Java(我猜是因为hbase是Java的本机).有一些python示例,我知道我可以使用python(使用thrift或其他模块)访问hbase,但是我想知道其他功能吗?

例如,hbase具有“协处理器”功能,可将数据推送到您进行计算的位置.这种类型是否适用于python或其他使用流式hadoop作业的应用程序?似乎在Java中,它可以知道您的工作并相应地管理数据流,但是这如何与流一起工作?如果不起作用,是否有办法获得这种类型的功能(通过流媒体而不切换到另一种语言)?

也许另一种询问方式是..非Java程序员在流式传输时如何才能获得hadoop功能的所有好处?

提前致谢!

解决方法:

据我所知,您正在谈论2个(或更多)完全不同的概念.

Hadoop Streaming”在那里通过您的可执行文件(独立于您选择的编程语言)流传输数据.使用流式传输时,不会丢失任何功能,因为该功能基本上是映射/减少您从hadoop流中获取的数据.

对于Hadoop部分,您甚至可以使用Pig或Hive大数据查询语言来高效地完成工作.使用最新版本的Pig,您甚至可以用python编写自定义函数,并将其用于Pig脚本中.

尽管有一些工具可以使您使用该语言,但是您永远不会忘记hadoop框架主要是用Java编写的.有时您可能需要编写专门的InputFormat.或猪里面的UDF等等.这样一来,您就可以轻松掌握Java方面的知识.

您的“ Hbase协处理器”示例与hadoop的流功能无关. Hbase协处理器包括2个部分:服务器端部分,客户端部分.我很确定在发布的hbase中会嵌入一些有用的服务器端协处理器.但是除此之外,您还需要编写自己的协处理器(还有一个坏消息:它的java).对于客户端,我确信您可以通过节俭地将它们与您喜欢的编程语言一起使用,而不会出现太大问题.

因此,作为对您的问题的回答:您始终可以躲避学习Java;仍在利用hadoop的潜力(使用第三方库/应用程序).但是,当粪便击中风扇时,最好能理解其内在内容.能够使用Java开发.了解Java可以让您完全控制hadoop / hbase环境.

希望对您有所帮助.

上一篇:Ubuntu18.04 安装配置HBase


下一篇:带有Javascript客户端的节俭Java服务器OutOfMemoryError