在CDH3上用非Java方式编写HBase MapReduce的最简单方法是什么?
我已经在这个问题上纠结很久了,感觉非常疲惫;希望能从Stack Overflow社区得到一些明显的启示,让我的小项目重新启动,这样我就可以不再自责了。我正在使用Cloudera CDH3、HBase .89和Hadoop .20。
我有一个Python/Django的应用程序,它通过Thrift接口向一个HBase表写入数据,这个部分运行得很好。现在我想把这些数据通过Map/Reduce处理成更多的HBase表。
这里显而易见的解决方案是Dumbo或Apache PIG,但在我的版本中,Pig对HBaseStorage适配器的支持还没有(Pig可以加载类和定义,但在“Map”步骤时卡住,抱怨“输入拆分”;Pig的邮件列表建议在Pig 0.8中修复了这个问题,但这个版本与CDH3 Hadoop不兼容,所以我可能得使用边缘版本的所有东西[我想])。我找不到任何关于如何让Dumbo使用HBaseStorage作为数据输出的信息。
我不在乎使用Python、Ruby、Scala、Clojure、Jython、JRuby甚至PHP,我只是真心不想写Java(原因有很多,主要是每次要把Int()转换成IntWritable()时那种无奈的感觉)。
在过去的四周里,我几乎尝试了所有能找到的解决方案和示例,想用其他语言编写HBase的Map/Reduce任务,但所有的资料似乎都过时或不完整。拜托,Stack Overflow,救救我吧!
1 个回答
这不是一个确切的答案,但这是我得到的最接近的内容——
我昨天在 #hbase 的 irc.freenode.net 上提问,Cloudera 的一位员工回应了我。关于我在使用 Pig 时遇到的“输入拆分”问题,这个问题是特定于 Pig 0.7 版本的,而 Pig 0.8 将会和 Cloudera CDH3 Beta 4 一起发布(具体发布时间还不确定)。所以我想做的事情(轻松地使用 HBase 表来写 MapReduce 任务,既作为数据源又作为数据去处)将在他们下一个版本中实现。此外,HBaseStorage 类也会得到普遍改进,以帮助从任何 JVM 语言进行读写操作,这样 Jython、JRuby、Scala 和 Clojure 等语言的使用也会变得更加可行。
所以目前这个问题的答案是:“等 CDH3 Beta 4 发布”,或者如果你等不及的话,“下载最新版本的 Pig,然后祈祷它能和你的 HBase 兼容。”