Hadoop+Hive 操作mongodb数据
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:
# hivehive> 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');有两种方式来指定所需连接的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'然后提供这个文件的路径给
mongo.properties.path这个表参数,如hive> CREATE EXTERNAL TABLE eventlog (TBLPROPERTIES('mongo.properties.path'='HiveTable.properties');
> 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"}')
>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数据的更多相关文章
- 使用hadoop mapreduce分析mongodb数据
使用hadoop mapreduce分析mongodb数据 (现在很多互联网爬虫将数据存入mongdb中,所以研究了一下,写此文档) 版权声明:本文为yunshuxueyuan原创文章.如需转载请标明 ...
- 在MVC模式下通过Jqgrid表格操作MongoDB数据
看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ...
- MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据
看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ...
- <关于数据仓库>基于docker的Mysql与Hadoop/Hive之间的数据转移 (使用Apache Sqoop™)
原创博客,转载请联系博主! 摘要:本文介绍了如何使用docker快速搭建一个可以从外部访问的mysql服务容器,和由docker搭建的分布式Hadoop文件系统,并且使用ApacheSqoop完成将m ...
- PHP操作MongoDB 数据库
最近有个项目,需要用php操作mongoDb数据,整理如下 1,连接MongoDB数据库 $conn = new Mongo(); 其他链接方式 //$conn=new Mongo(); #连接本地主 ...
- 环境搭建 Hadoop+Hive(orcfile格式)+Presto实现大数据存储查询一
一.前言 Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关 ...
- spark+hcatalog操作hive表及其数据
package iie.hadoop.hcatalog.spark; import iie.udps.common.hcatalog.SerHCatInputFormat; import iie.ud ...
- Hive[5] HiveQL 数据操作
5.1 向管理表中装载数据 Hive 没有行级别的数据插入更新和删除操作,那么往表中装载数据的唯一途径就是使用一种“大量”的数据装载操作,或者通过其他方式仅仅将文件写入到正确的目录下: LOA ...
- 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)
引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...
随机推荐
- VSTO学习笔记
文档类型程序发布: 安装.NetFrameWork Visual Studio 2010 Tools for Office Runtime 4.0下载地址: http://www.microsoft. ...
- [leetcode] 16. Add Binary
这个题目相对有点奇怪,题目如下: Given two binary strings, return their sum (also a binary string). For example, a = ...
- Spring框架事务支持模型的优势
全局事务 全局事务支持对多个事务性资源的操作,通常是关系型数据库和消息队列.应用服务器通过JTA管理全局性事务,API非常烦琐.UserTransaction通常需要从JNDI获取,意味着需要与JND ...
- 爬虫Scrapy指令学习
1.新建一个新的爬虫项目指令 scrapy startproject xxx 2.在项目/spider目录下创建一个名为XXX的爬虫,并指定爬取域的范围 scrapy genspider XXX & ...
- (转)为什么要重写 hashcode 和 equals 方法?
作者丨hsm_computer cnblogs.com/JavaArchitect/p/10474448.html 我在面试Java初级开发的时候,经常会问:你有没有重写过hashcode方法?不少候 ...
- bonjour browser 下载
在Mac 上叫 Bonjour Browser http://www.macupdate.com/app/mac/13388/bonjour-browser/download IOS 上的 app 叫 ...
- FunDA(14)- 示范:并行运算,并行数据库读取 - parallel data loading
FunDA的并行数据库读取功能是指在多个线程中同时对多个独立的数据源进行读取.这些独立的数据源可以是在不同服务器上的数据库表,又或者把一个数据库表分成几个独立部分形成的独立数据源.当然,并行读取的最终 ...
- Exploit之初识Linux下缓冲区溢出
本文的目的不是为了介绍如何进行恶意的破坏性活动,而是为了教会你如何去防御此类破坏性活动,以帮助你扩大知识范围,完善自己的技能,如有读者运用本文所学技术从事破坏性活动,本人概不负责. 0×01 前言 1 ...
- windows 安装nexus3
下载地址 nexus官网下载页面 文件名:nexus-3.3.1-01-win64.zip,解压,cd到bin目录 运行: nexus.exe /run 1 安装成系统服务: nexus.exe /i ...
- 跨域请求之jsonp的实现方式
ajax请求受同源策略影响,不允许进行跨域请求,而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在sr ...