2017-08-13 5 views
0

これは、MongoDBドライバを使用してHIVEとMongoDB間の接続を確立することについてです。私はリンクをオンラインで見てきました。多くの人がそれを見通しています。MongoDBハイブ接続 - JARの問題

しかし、私はコネクティビティを確立するだけで大​​きな問題に直面しています。

まず、Windows 64ビットシステムでCloudera Quickstart VM 5.5を使用しています。 このVMはHadoopサンドボックスをホストします。

デスクトップにMongoDBがインストールされています(同じものもCloudera VMをホストしています)。 MongoDBデータベースの認証はありません。

2つの環境を接続するために使用する3つの接続ジャーをダウンロードしました。 MongoDBのと人口データのコレクションを作成し

  1. - :ここで

    は、ステップのリストです。ポートで27017

  2. を実行しているのMongoDBデータベース・サーバは、ハイブシェルを開始し、 は、クラスパスに次のjarファイルを追加しました: -

mongo-hadoop-core-2.0.2.jar 
mongo-hadoop-hive-2.0.2.jar 
mongo-java-driver-3.5.0.jar 

(最後の1 - モンゴ、Javaベースドライバはmongodb自身から参照されたサイトからダウンロードされました)

上記のjarsを上記のディレクトリにHDFSにアップロードしました。その後、低いとは、最終的にはHIVEシェルを立ち上げ、ハイブシェル自体にjarファイルを追加しました: -

> ADD JAR hdfs:///tmp/hive/mongo/mongo-hadoop-core-2.0.2.jar; 
> ADD JAR hdfs:///tmp/hive/mongo/mongo-hadoop-hive-2.0.2.jar; 
> ADD JAR hdfs:///tmp/hive/mongo/mongo-java-driver-3.5.0.jar; 

その後、私は動作するようになっているHIVEシェルから次のコマンドを実行します -

CREATE TABLE RAVINE 
    ( 
     id INT, 
     h_name STRING, 
     h_age INT 
    ) 
    STORED BY "com.mongodb.hadoop.hive.MongoStorageHandler" 
    WITH SERDEPROPERTIES ('mongo.columns.mapping'='{"id":"_id","h_name":"name","h_age":"a 
ge"}')  TBLPROPERTIES("mongo.uri"="mongodb://100.96.237.185:27017/test.beehive"); 

は、私が手にエラーがアービンドにより、上記と同じである: -

FAILED:実行エラー、からの戻りコードorg.apache.hadoop.hive.ql.exec.DDLTask。 COM/MongoDBの/ utilに/ JSON

私は、エラーがであり、このログイン時にstumpledものを見るためにClouderaのログを経て: - Clouderaの

から

ログファイル

enter image description here

場合あなたは上記のエラーログを見なければなりませんでした。それは

"は、jarファイルを読み込めませんでした"、と述べています。zipcollection無効END ヘッダ(悪い中央ディレクトリオフセット)

私はこの同じjarファイルを得ていたので、これは非常に混乱している - なぜjarファイルがダウンロードされますhttps://mongodb.github.io/mongo-java-driver/

から>「モンゴ-javaのドライバを」同じサイトからこのタイプのエラーが発生しますか?私は破損したjarファイルの可能性を想定していたので、3.5.0からさまざまなドライババージョンをダウンロードしようとしました。すべての方法で3.0.4まで!変更なし - 同じエラーです。

ここに私の質問があります。 Javaドライバをダウンロードするためのサイトでは、MongoDBはMavenの依存を表示します -

enter image description here

だから私の質問は非常に簡単です! mongoDBのWebサイトからjarファイルをダウンロードすると、どうやってこのようなエラーが発生するのですか?

私は次に何をすべきかに関する提案を誰にも持っていますが、https://github.com/mongodb/mongo-hadoop/wiki/Hive-Usage のようなウェブ上のリンクのほとんどは、これは非常に簡単な30分のプロセスであると思われますが、この状態。

ご意見やご提案をいただければ幸いです。

答えて

0

これらのjarファイルは、HDFS上にないローカルUNIXディレクトリに置く必要があります。これらのすべてのjarファイルを、Hiveクエリを実行しているUNIXのディレクトリに置いてください。

hive> ADD JAR /home/hive/mongo/mongo-hadoop-core-2.0.2.jar;

それはまだmongo-hadoop-*.jar

v1.5.1にダウングレードしようと動作しない場合はこれに関連し、同様の問題を参照してください。 Unable to connect Hive with MongoDB using mongo-hadoop connector

+0

返信いただきありがとうございます。私は地元のcentos VMから(あなたが示唆したように)jarファイルを追加しました - >それでも同じエラーが出ました。私は瓶を「mongo-hadoop-hive-1.5.1.jar」と「mongo-hadoop-core-1.5.1.jar」に格下げしましたが、それでも同じエラーがありました。 (ちなみに、この2つのジャーはエラーを投げているものではありませんでした)。エラーを投げかけていたと思われる瓶は、MongoDB独自のjar - "mongo-java-driver-3.5.0.jar"でした。あなたが見ることができるように - 私は古いバージョンを2.14.2まで試しました。私はここに何かを見逃していますか?githubのリンクは、このプロセスが簡単であることを示しています! – Mario