2016-02-17 51 views
3

我已經在桌面上安裝了Robomongo,但是我能夠將數據從Robomongo接收到配置單元表中。我已經申請了以下步驟: -MongoDB Hadoop集成

  1. 下載所需jars-蒙戈-java的驅動程序2.13.3.jar,蒙戈 - Hadoop的核心1.4.0.jar,蒙戈 - Hadoop的hive- 1.4.0.jar,MongoDB的驅動-3.2.1-javadoc.jar。

  2. 我已經將jar文件放在一個臨時文件夾中。

  3. 在配置單元腳本中,我添加了這些jar文件。我用腳本如下: -

ADD JAR /tmp/mongodb/jarfiles/mongo-java-driver-2.13.3.jar;

ADD JAR /tmp/mongodb/jarfiles/mongo-hadoop-core-1.4.0.jar;

ADD JAR /tmp/mongodb/jarfiles/mongo-hadoop-hive-1.4.0.jar;

ADD JAR /tmp/mongodb/jarfiles/mongodb-driver-3.2.1-javadoc.jar

CREATE TABLE個人

( ID字符串,

名STRING,

age STRING,

國籍STRING

STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'

WITH SERDEPROPERTIES

( 'mongo.columns.mapping'='{ 「ID」: 「_ ID」, 「名稱」:」名稱「,」年齡「:」年齡「,」國籍「:」國籍「}')

TBLPROPERTIES('mongo.uri'='mongodb:// localhost:port/admin.test_1');

在本地主機中,我給出了IP地址,並在端口號給出了端口號。 admin是數據庫名稱,test_1是我嘗試攝取的集合。 我每次運行此代碼時,出現以下錯誤: -

錯誤:處理語句時出錯:java.net.URISyntaxException:絕對URI中的相對路徑:SERDEPROPERTIES('mongo.columns.mapping'='{「 id「:%22_id%22,%22name%22:%22Name%22,%22age%22:%22Age%22,%22國籍%22:%22國籍%22%7D')(state =,code = 1)

當我使用SERDEPROPERTIES(「mongo.columns.mapping」 =「{}」)在上面的代碼保持一切完好無損,我收到以下錯誤: -

錯誤:錯誤在處理語句:java.net .URISyntaxException:索引13處的方案名稱中存在非法字符:TBLPROPERTIES('mongo.uri'='mongodb:// lo calhost:port/admin.test_1')(state =,code = 1)

我正在使用CDH 5.4。誰能告訴我我該如何解決這個問題?

+0

我也下載並添加了mongo-java-driver-3.2.2和mongodb-driver-3.2.2.jar,但我仍然得到相同的錯誤。需要幫助 ! – riz

+0

我不知道'state =,code = 1'這行代碼來自哪裏。你有與'國家'或'代碼'相關的字段嗎?如果是這樣,可能會發佈一個示例文檔。 –

+0

我有名字 - 姓名,年齡和國籍。我沒有名爲狀態或代碼的字段。我使用的確切腳本在這裏。我認爲state =,code = 1是不考慮字段,因爲當我保持mongo.columns.mapping爲空即當我使用SERDEPROPERTIES('mongo.columns.mapping'='{}'),即使那麼我得到的狀態=,代碼= 1錯誤,這是相同的情況下,當我提到在mongo.column.mapping字段 – riz

回答

1

如安裝mongo-hadoop Hive所述,連接器至少需要版本3.0.0的驅動程序「超級」jar(稱爲「mongo-java-driver.jar」)。您似乎正在使用v2.13.3,可能不支持Hive。

您可以從MongoDB Java Driver頁面下載v3 + java uber驅動程序。確保您在點擊下載按鈕之前選擇mongo-java-driver和特定版本。 jar文件名應該類似於mongo-java-driver-3.x.x.jar

+0

我已經下載並添加了mongo-java-driver-3.2.2。但我仍然得到同樣的錯誤。任何解決方案 – riz