MongoDB hadoop 连接器无法在 mongo hive 表上查询
Posted
技术标签:
【中文标题】MongoDB hadoop 连接器无法在 mongo hive 表上查询【英文标题】:MongoDB hadoop connector fails to query on mongo hive table 【发布时间】:2014-07-01 08:51:42 【问题描述】:我正在使用 MongoDB hadoop 连接器在 hadoop 中使用 hive 表查询 mongoDB。
我可以执行
select * from mongoDBTestHiveTable;
但是当我尝试执行以下查询时
select id from mongoDBTestHiveTable;
它抛出以下异常。
hive lib 文件夹中存在以下类。
异常堆栈跟踪:
Diagnostic Messages for this Task:
Error: java.io.IOException: Cannot create an instance of InputSplit class = com.mongodb.hadoop.hive.input.HiveMongoInputFormat$MongoHiveInputSplit:Class com.mongodb.hadoop.hive.input.HiveMongoInputFormat$MongoHiveInputSplit not found
at org.apache.hadoop.hive.ql.io.HiveInputFormat$HiveInputSplit.readFields(HiveInputFormat.java:147)
at org.apache.hadoop.io.serializer.WritableSerialization$WritableDeserializer.deserialize(WritableSerialization.java:71)
at org.apache.hadoop.io.serializer.WritableSerialization$WritableDeserializer.deserialize(WritableSerialization.java:42)
at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:370)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:402)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:162)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:157)
Caused by: java.lang.ClassNotFoundException: Class com.mongodb.hadoop.hive.input.HiveMongoInputFormat$MongoHiveInputSplit not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1626)
at org.apache.hadoop.hive.ql.io.HiveInputFormat$HiveInputSplit.readFields(HiveInputFormat.java:144)
... 10 more
Container killed by the ApplicationMaster.
请指教。
【问题讨论】:
你找到这个问题的原因了吗? 【参考方案1】:您还需要将 mongo-hadoop-* 和 mongo 驱动程序 jar 添加到所有工作人员的 MR1/MR2 类路径中
【讨论】:
是的,这些 jars 存在于 hadoop 安装目录和 hive 类路径中 我已经为 hadoop 2.2 使用了 1.3.0 jar 并且工作正常。 groups.google.com/forum/#!topic/mongodb-user/kVil7uIJEhw以上是关于MongoDB hadoop 连接器无法在 mongo hive 表上查询的主要内容,如果未能解决你的问题,请参考以下文章
无法序列化类 org.apache.hadoop.io.DoubleWritable - MongoDB Hadoop 连接器 + Spark + Python
无法使用 nestjs/mongoose 连接 mongoDB
HDP Sandbox 中 MongoDB Hadoop 连接器故障生成的 Hive 日志在哪里?