一、环境配置
1、软件版本:
CDH6.2
Mongodb3.4
2、CDH的hive设置
Hive --> 配置 --> 搜索 jar
/etc/hive/auxlib
Hive --> 配置 --> 搜索 hive-env.sh
HIVE_AUX_JARS_PATH=/etc/hive/auxlib
重启 Hive
二、步骤
1. 下载jar包,放到hive节点的第三方包/etc/hive/auxlib目录下
http://mvnrepository.com/artifact/org.mongodb.mongo-hadoop/mongo-hadoop-core/2.0.2
http://mvnrepository.com/artifact/org.mongodb.mongo-hadoop/mongo-hadoop-hive/2.0.2
http://mvnrepository.com/artifact/org.mongodb/mongo-java-driver/3.6.3
注意:mongo-java-driver的jar包版本不能低于mongodb组件版本
软件下载网址:
https://repo1.maven.org/maven2/org/mongodb/
2、修改文件的访问权限:
chmod -R 777 /etc/hive/auxlib/
3. 重启Hive完成
三、测试
1、在mongodb创建数据
2、创建hive表
CREATE TABLE user_tmp (
name STRING,
age INT
) STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
WITH SERDEPROPERTIES('mongo.columns.mapping'='{"name":"name","age":"age"}')
TBLPROPERTIES('mongo.uri'='mongodb://10.1.119.34:27017/test.user');
解释:
如果是内部表,在删除表的时候也会删除mongodb里面的数据。
mongo.columns.mapping:hive表与mongodb字段的映射,字段名完全相同,可以不写,
('mongo.columns.mapping'='{"id":"_id","adam":"Adam","create_time":"createTime"}')
mongo.uri'='mongodb://用户名:密码@IP:端口/库.表
注意:
(本测试没有加入用户名密码,因为之前配置用户名和密码没有重启mongdb服务器,因此用户名和密码设置不生效,之前设置了用户密码:root、cetc@2019需要修改密码)。设置密码时候建议不要带有@会与mongo.uri造成无法识别
3、结果