ハイブをmongo-hadoop-core 2.0.2で初めてインストールして設定しようとしています。 hadoop 2.8.0、Hive 2.1.1、MongoDB 3.4.6がインストールされています。と個別に実行するとすべて正常に動作します。mongo-hadoopコネクタを使用してMongo-hadoopコネクタを使用してHiveを接続できません
私の問題は、MongoDBとHiveを接続できないことです。私はここで述べたようにmongo-Hadoopコネクタを使用していますhttps://github.com/mongodb/mongo-hadoop/wiki/Hive-Usage 必要なjarファイルはHadoopとHiveライブラリに追加されています。 hive.shやランタイムコンソールからhive.shやランタイムにそれらを追加します。 私のクエリは
CREATE EXTERNAL TABLE testHive
(
id STRING,
name STRING
)
STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
WITH SERDEPROPERTIES('mongo.columns.mapping'='{"id":"_id","name":"name"}')
TBLPROPERTIES('mongo.uri'='mongodb://localhost:27017/hiveDb.testHive');
であると私はそれがそのCOM/MongoDBの/ Hadoopの/ IO/BSONWritable示し、次のエラー
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. com/mongodb/hadoop/io/BSONWritable
hive> ERROR hive.ql.exec.DDLTask - java.lang.NoClassDefFoundError: com/mongodb/hadoop/io/BSONWritable
at com.mongodb.hadoop.hive.BSONSerDe.initialize(BSONSerDe.java:132)
at org.apache.hadoop.hive.serde2.SerDeUtils.initializeSerDe(SerDeUtils.java:537)
at org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:424)
at org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:411)
at org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:279)
at org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:261)
を取得し、テーブルクエリ
を作成して実行しながら、私はエラーを取得していますクラスはクラスパスにはありませんが、必要な(mongo-hadoop-core.jar)jarとクラスがjarファイルに追加されています。 Iが
Mongoの-Hadoopのコア2.0.2、
Mongoの-Hadoopの-ハイブ2.0.2を使用していジャーのバージョン
MongoのJavaベースドライバ3.0.2
ありがとう
両方の方法で試してみましたが、まだ動作していませんでした。 しかし、mongo-hadoop - *。jarのv1.5.1にダウングレードした後に動作しました。以前のバージョン、つまり2.0.2のようなものは、hadoopやハイブと互換性がありませんでした。 –
はい。バージョンの互換性が根本的なケースになります! –