场景是,我需要处理一个文件(输入),并且对于每个记录,我需要检查输入文件中的某些字段是否与Hadoop集群中存储的字段匹配。
我们的想法是使用MRJob处理输入文件,并使用HIVE从hadoop集群获取数据。我想知道是否可以在MRJob模块内连接HIVE。如果是这样的话,该怎么做呢?
如果不是,那么满足我的需求的理想方法是什么?
我是Hadoop、MRJob和Hive的新手。
请提供一些建议。
发布于 2016-11-29 08:18:13
“匹配存储在Hadoop集群中的字段。”-->您的意思是说,您需要搜索字段是否也存在于此文件中?
大约总共有多少个文件需要扫描?
一种解决方案是加载HBase表中的每一项,对于输入文件中的每一条记录,从表中“获取”记录。如果GET成功,则该记录存在于HDFS中的其他位置,否则不存在。您需要为每个HBase记录提供一个唯一的标识符,并且相同的标识符也应该存在于您的输入文件中。
您也可以连接到Hive,但模式必须是严格的,以便所有HDFS文件都能够加载到单个Hive表中。HBase实际上并不关心列(只需要ColumnFamilies )。与HBase相比,MapReduce和Hive的另一个缺点是速度较低(接近实时)。
希望这能有所帮助。
https://stackoverflow.com/questions/40855118
复制相似问题