Hadoop+Hive 操作mongodb数据

1、版本概述

hadoop-2.7.3、hive-2.2

下载响应的jar包:http://mvnrepository.com/,直接搜索想要的jar包,例如本次安装需要的:

mongo-hadoop-core-2.0.2.jar、mongo-hadoop-hive-2.0.2.jar、mongo-java-driver-3.2.1.jar

下载自己需要的版本,版本要统一。

2、配置

将下载好的jar包分别上传到hadoop和hive的lib目录下:

3、启动hive,加载jar包

进入到hive的家目录下的bin目录,./hive

hive>add jar /data/hadoop-2.7.3/hive-2.2/lib/mongo-hadoop-core-2.0.2.jar;

hive>add  jar  /data/hadoop-2.7.3/hive-2.2/lib/mongo-hadoop-hive-2.0.2.jar;

hive>add  jar   /data/hadoop-2.7.3/hive-2.2/lib/mongo-java-driver-3.2.1.jar;

4、hive操作mongodb方式有两种:

1)MongoDB-based 直接连接hidden节点,使用 com.mongodb.hadoop.hive.MongoStorageHandler做数据Serde
2)BSON-based 将数据dump成bson文件,上传到HDFS系统,使用 com.mongodb.hadoop.hive.BSONSerDe
 
5、mongodb-based:

在命令行直接运行hive:

  1. # hive
  2. hive> CREATE TABLE eventlog (
        > id string,
        > userid string,
        > type string,
        > objid string,
        > time string,
        > source string)
        > STORED BY
    'com.mongodb.hadoop.hive.MongoStorageHandler'
        > WITH
    SERDEPROPERTIES('mongo.columns.mapping'='{"id":"_id"}')
        > TBLPROPERTIES('mongo.uri'='mongodb://user:password@ip:port
    /saturn.users');
  3. 有两种方式来指定所需连接的Mongo Collection。
    1. 在上述示例里面,通过mongo.uri这个表属性来指定,属性的值填入的是MongoDB connection string,通过它来指向具体的collection。这种方式会将这个URI存入表的metadata里面,如果需要填写连接的一些认证信息(如username:password等),该方式不太适合。
    2. 第二种方式是把connection string填入一个properties文件,如:

    # HiveTable.properties
    mongo.input.uri=mongodb://user:password@ip:port /saturn.users'
  4. 然后提供这个文件的路径给mongo.properties.path这个表参数,如

    hive> CREATE EXTERNAL TABLE eventlog (
        > id string,
        > userid string,
        > type string,
        > objid string,
        > time string,
        > source string)
        > STORED BY
    'com.mongodb.hadoop.hive.MongoStorageHandler'
        > WITH
    SERDEPROPERTIES('mongo.columns.mapping'='{"id":"_id"}')
        >
    TBLPROPERTIES('mongo.properties.path'='HiveTable.properties');
  5. hive> select * from eventlog limit 10;
    OK
    5694b8807aff70d36f526a19    NULL  
     NULL    NULL    NULL  
     NULL
    56960a27f95a32ad7e2b9719    NULL  
     NULL    NULL    NULL  
     NULL
    56961da0f95a32ad7e2b971c    NULL  
     NULL    NULL    NULL  
     NULL
    56961eeaf95a32ad7e2b9721    NULL  
     NULL    NULL    NULL  
     NULL
    569735e4837bb8e43e0260b1    NULL  
     NULL    NULL    NULL  
     NULL
    56973672837bb8e43e0260b3    NULL    NULL  
     NULL    NULL    NULL
    56974a73837bb8e43e0260ba    NULL  
     NULL    NULL    NULL  
     NULL
    5697578ff5531e4d74c05db8    NULL  
     NULL    NULL    NULL  
     NULL
    5697894294e366e131643ac5    NULL  
     NULL    NULL    NULL  
     NULL
    56978a5b94e366e131643ac7    NULL    NULL  
     NULL    NULL    NULL
    Time taken: 1.905 seconds, Fetched: 10 row(s)

 它是直接处理mongo里最新的数据.

4)create EXTERNAL table IF NOT EXISTS
outer_table (userid string)
partitioned 
by (ptDate
string)
ROW FORMAT DELIMITED FIELDS TERMINATED 
BY '\t';

如果创建的表是EXTERNAL的,那么在Hive里删除这张表时,不会影响MongoDB里面的数据,只会删除这张表的metadata。如果没有指定EXTERNAL,那么删除表的时候会连带MongoDB里的数据一并删除,因此最好是指定创建的表为EXTERNAL。

5)如果你想存到HDFS里也可以,用如下语句就可以。
hive> create table
qsstest as select * from eventlog limit 10;

 

6、  BSON-based方式

参考:

http://blog.csdn.net/tonylee0329/article/details/51648524

http://blog.csdn.net/dr_guo/article/details/51698757

Hadoop+Hive 操作mongodb数据的更多相关文章

  1. 使用hadoop mapreduce分析mongodb数据

    使用hadoop mapreduce分析mongodb数据 (现在很多互联网爬虫将数据存入mongdb中,所以研究了一下,写此文档) 版权声明:本文为yunshuxueyuan原创文章.如需转载请标明 ...

  2. 在MVC模式下通过Jqgrid表格操作MongoDB数据

    看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ...

  3. MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据

    看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ...

  4. <关于数据仓库>基于docker的Mysql与Hadoop/Hive之间的数据转移 (使用Apache Sqoop™)

    原创博客,转载请联系博主! 摘要:本文介绍了如何使用docker快速搭建一个可以从外部访问的mysql服务容器,和由docker搭建的分布式Hadoop文件系统,并且使用ApacheSqoop完成将m ...

  5. PHP操作MongoDB 数据库

    最近有个项目,需要用php操作mongoDb数据,整理如下 1,连接MongoDB数据库 $conn = new Mongo(); 其他链接方式 //$conn=new Mongo(); #连接本地主 ...

  6. 环境搭建 Hadoop+Hive(orcfile格式)+Presto实现大数据存储查询一

    一.前言 Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关 ...

  7. spark+hcatalog操作hive表及其数据

    package iie.hadoop.hcatalog.spark; import iie.udps.common.hcatalog.SerHCatInputFormat; import iie.ud ...

  8. Hive[5] HiveQL 数据操作

    5.1 向管理表中装载数据   Hive 没有行级别的数据插入更新和删除操作,那么往表中装载数据的唯一途径就是使用一种“大量”的数据装载操作,或者通过其他方式仅仅将文件写入到正确的目录下:   LOA ...

  9. 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

    引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...

随机推荐

  1. [redis] redis 如何删除匹配模式的多个key值

    redis-cli keys "user:*" | grep "user:[0-9]\+$" | xargs redis-cli DEL redis-cli k ...

  2. DBCC--LOG

    DBCC LOGTo retrieve the transaction log for a given database.对应日志文件较大的数据库,慎用该命令Uasge:DBCC LOG(<db ...

  3. HI-LO计数法,赌桌,与机会

    HI-LO计数法,赌桌,与机会 “人只是在拼一种可能性”. 很多简单道理往往字面上理解容易,可实际运用难极. 一,那些人生中被扯的蛋 而关于人生的指导,好多耳熟能详的老话最终都被发现是蒙傻逼的.随便说 ...

  4. 批处理系列(13) -从视频导出高质量GIF图片

    需要ffmpeg,配置ffmpeg到环境变量. 保存代码到HQGIF.bat,与视频同目录,管理员权限运行CMDcd到此目标目录: HQGIF.bat input_video_name.mp4 out ...

  5. requirejs的插件介绍与制作

    本文由作者郑海波授权网易云社区发布. 前言 我这里就不介绍requirejs了, 简而言之: requirejs是支持AMD规范的模块加载器, 事实上它也是AMD的最直接推动者. 现在可供挑选的开源模 ...

  6. app开发技术调研

    l  面向消费者与公众的应用系统,主要分为3种主流的渠道: 1.   web应用 2.   基于腾讯微信开放api构建的微信app 3.   移动端app ll 在移动端app方面,通过调研,现主流的 ...

  7. 20164317《网络对抗技术》Exp2 后门原理与实践

    1.实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作Shell, 任务计划启动 (3)使用MSF meterpreter(或其他软件)生成可执行文 ...

  8. brew - 更换国内源

    brew如果不换成国内源,安装软件时候可能会出问题,不是安装不了就是速度很慢,所以使用它,更换国内游是比较好的选择! 我更换的是清华大学开源软件镜像站,打开shell窗口,依次执行下面命令: cd & ...

  9. Android Studio无法连接真机的问题?

    我不说,你可能又浪费半天时间,最后的结果,你可能还是没能解决!!! 现在,一般安卓手机为了安装软件方便,一般都安装了豌豆荚,但是,就是这个豌豆荚占用了Android Studio的ADB端口,导致An ...

  10. C++类模板 template <class T>

    C++在发展的后期增加了模板(template )的功能,提供了解决这类问题的途径.可以声明一个通用的类模板,它可以有一个或多个虚拟的类型参数. 比如: class Compare_int class ...