1. 下载

wget http://repo1.maven.org/maven2/org/mongodb/mongo-hadoop/mongo-hadoop-hive/2.0.2/mongo-hadoop-hive-2.0.2.jar
wget http://repo1.maven.org/maven2/org/mongodb/mongo-hadoop/mongo-hadoop-core/2.0.2/mongo-hadoop-core-2.0.2.jar

2. 放入hive的lib目录
     因为本人搭建的是CDH版本的hadoop集群,所以hive的lib目录在:
     /opt/cloudera/parcels/CDH/lib/hive/lib
     把上面三个jar包分别放入集群每个节点上的目录中。然后做成软链接,如下:
          ln -s mongo-hadoop-hive-2.0.2.jar mongo-hadoop-hive.jar
          ln -s mongo-hadoop-core-2.0.2.jar mongo-hadoop-core.jar
     如图:
  
3. mongdb中插入一些测试数据:
     db.student.insert({"name":"张三","age":"22","sex":"男","class":"计算机2班"});//如果数据库中不存在集合,就创建
     db.student.insert({"name":"李四","age":"23","sex":"女","class":"计算机3班"});
     db.student.insert({"name":"王五","age":"24","sex":"男","class":"计算机2班"});
     db.student.insert({"name":"刘六","age":"25","sex":"男","class":"计算机3班"});
     db.student.insert({"name":"赵七","age":"26","sex":"女","class":"计算机3班"});
     db.student.insert({"name":"吴八","age":"28","sex":"女","class":"计算机2班"});
4. hive 中创建表
      create external table student
  ( id string,
    name string,
    age string,
    sex string,
    class string
  )
  stored by 'com.mongodb.hadoop.hive.MongoStorageHandler'
  with serdeproperties('mongo.columns.mapping'='{"id":"_id","name":"name","age":"age","sex":"sex","class":"class"}')
  tblproperties('mongo.uri'='mongodb://root:e19ee8c4@192.168.0.12:40000/test_v3.student');
  查询数据如下:
    select * from student;
    

  数据是实时同步的:

    mongodb中插入一条数据如下:

      db.student.insert({"name":"杨十","age":"28","sex":"男","class":"计算机3班"});

      在做查询:

      

    mongodb中修改一条数据如下:

      db.student.update({"name":"张三"},{$set:{"name":"张无忌"}});#只想改某个key的value使用set

      

    mongodb中删除一条数据如下:

      db.student.remove({"name":"张无忌"});#删除

      

      看张无忌大哥已经不在了,缅怀一下下。

  mongodb中做统计:

      注意在做统计及用到MR的时候会报错,具体如下:

      

      发现是jar包没有引入成功,可是我已经把三个jar都放到指定的地方了,可是还是不行,所以我就在hive里直接引用这三个jar包,然后在测试:

      

                    add jar /opt/cloudera/parcels/CDH/lib/hive/lib/mongo-hadoop-core-2.0.2.jar
                    add jar /opt/cloudera/parcels/CDH/lib/hive/lib/mongo-hadoop-hive-2.0.2.jar
                    add jar /opt/cloudera/parcels/CDH/lib/hive/lib/mongo-java-driver-3.2.2.jar
                    然后看是否能正常统计了:
                         select sun(age) from student;
                    直接看结果:
      

      成功了,接下来就要研究放入到CDH hive jar里使之生效。

  

CDH5.15.1 hive 连接mongodb配置及增删改查的更多相关文章

  1. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  2. 利用koa实现mongodb数据库的增删改查

    概述 使用koa免不了要操纵数据库,现阶段流行的数据库是mongoDB,所以我研究了一下koa里面mongoDB数据库的增删改查,记录下来,供以后开发时参考,相信对其他人也有用. 源代码请看:我的gi ...

  3. nodejs笔记五--MongoDB基本环境配置及增删改查;

    一.基本环境配置: 1,首先到官网(http://www.mongodb.org/downloads )下载合适的安装包,然后一步一步next安装,当然可以自己更改安装目录:安装完成之后,配置环境变量 ...

  4. python的Web框架,Django的ORM,模型基础,MySQL连接配置及增删改查

    Django中的ORM简介 ORM概念:对象关系映射(Object Relational Mapping,简称ORM): 用面向对象的方式描述数据库,去操作数据库,甚至可以达到不用编写SQL语句就能够 ...

  5. python连接集群mongodb,封装增删改查

    1.下载pymongo pip install pymongo 2.直接上代码 [ini配置文件] 封装读ini省略~~ [db.py] class Database(): def __init__( ...

  6. webpack4+express+mongodb+vue 实现增删改查

    在讲解之前,我们先来看看效果如下所示: 1)整个页面的效果如下: 2) 新增数据效果如下: 3) 新增成功如下: 4) 编辑数据效果如下: 5) 编辑成功效果如下: 6) 删除数据效果如下: 7) 删 ...

  7. nodejs对mongodb数据库的增删改查操作(转载)

    首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...

  8. C++ API方式连接mysql数据库实现增删改查

    这里复制的 http://www.bitscn.com/pdb/mysql/201407/226252.html 一.环境配置 1,装好mysql,新建一个C++控制台工程(从最简单的弄起,这个会了, ...

  9. 【C#】使用NHibernate连接MySQL数据库及增删改查

    学习资料 http://www.sikiedu.com/course/51/task/891/show https://www.codeproject.com/Articles/26123/NHibe ...

随机推荐

  1. JavaScript 高级特性

    1. 原型Prototype 1.1 构造函数 所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量.对构造函数使用new运算符,就能生成实例,并且this变量会绑定 ...

  2. 总结,为什么要重写hashset的hashcode()和equals()?

    看了非常多博客,怕自己忘记了,通俗易懂的总结如下 本人总结下: 重写前,比较地址,hashcode方法如果相等可能是同一个对象,所以再用equals再比内存地址 重写后,比较值,重写hashCode方 ...

  3. 更改/var/log/messages默认权限

    问题描述: 操作系统:redhat 6.5 因为开发人员和运维人员平时在应用出现bug时,会需要看/var/log/message日志,但是默认权限为600,因此除了root用户都无法读取,现需要把每 ...

  4. 学习python第三天

    变量的命名规范 1.只能有 字母 数字 及_组成 2.不能以数字开头 3.避免与系统关键词重名:重名不会报错,但系统的功能就被自定义的功能屏蔽掉了(严重不建议这样做) 4._开头的变量都有特出含义 5 ...

  5. RabbitMQ tutorial

    一.安装RabbitMQ RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开 ...

  6. MYSQL使用PMM进行性能监控

    简介Percona监视和管理(PMM)是一个用于管理和监视MySQL和MongoDB性能的开源平台.它是由Percona与托管数据库服务.支持和咨询领域的专家合作开发的. PMM是一个免费的开源解决方 ...

  7. analyse idoc by creation date

    t-code ZMM0127 infoset: ZMM_IDOC_READ_01 go to code: AUTHORITY-CHECK OBJECT 'S_IDOCMONI'ID 'ACTVT' F ...

  8. VS2017 ASP.NET MVC 5.0 开部署问题汇总

    1[SqlException (0x80131904): 拒绝了对对象 '****' (数据库 '***',架构 'dbo')的 EXECUTE 权限.] “/”应用程序中的服务器错误. SQL 20 ...

  9. mysql创建表及插入数据操作步骤及注意要点

    环境:mysql workbench 1.创建新的表,注意,指定要存放的数据库 列名可以加单引号(键盘上1左边的引号),也可以不加 2.插入数据 注意:如果数据是字符型,必须使用单引号或者双引号,如: ...

  10. 数据库索引的数据结构b+树

    b+树的查找过程:如上图所示,如果要查找数据项29,那么首先会把磁盘块1由磁盘加载到内存,此时发生一次IO,在内存中用二分查找确定29在17和35之间,锁定磁盘块1的P2指针,             ...