0

Hadoop のハイブ テーブルを使用して mongoDB にクエリを実行するために、MongoDB Hadoop コネクタを使用しています。

私は実行することができます

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.

ご意見をお聞かせください。

4

1 に答える 1

1

また、すべてのワーカーの MR1/MR2 クラスパスに mongo-hadoop-* と mongo ドライバー jar を追加する必要があります。

于 2014-07-14T14:55:33.147 に答える