场景是我需要处理文件(输入),对于每个记录,我需要检查输入文件中的某些字段是否与存储在Hadoop集群中的字段匹配。
我们想到使用MRJob处理输入文件并使用HIVE从hadoop集群中获取数据。我想知道我是否可以在MRJob模块中连接HIVE。如果是这样怎么做?
如果不是满足我要求的理想方法。
我是Hadoop,MRJob和Hive的新手。
请提供一些建议。
答案 0 :(得分:0)
“匹配存储在Hadoop集群中的字段。” - >你的意思是你需要搜索这个文件中是否存在字段?
关于您需要扫描多少个文件?
一种解决方案是加载HBase表中的每个项目,并为输入文件中的每个记录加载“GET”表中的记录。如果GET成功,那么记录存在于HDFS的其他地方,否则就不存在。您需要为每个HBase记录使用唯一标识符,并且输入文件中也应存在相同的标识符。
您也可以连接到Hive,但架构需要严格,以便能够将所有HDFS文件加载到单个Hive表中。 HBase并不真正关心列(只需要ColumnFamilies)。 MapReduce和Hive的另一个缺点是,与HBase(接近实时)相比,速度会很低。
希望这有帮助。