概述:使用dump 方式将mongo数据导出,上传到hdfs,然后在hive中建立外部表。

1.     使用mongodump 将集合导出

mongodump --host=localhost:27017  --db=mydb --collection=users  --out=/tmp/root/mongodump0712

[root@slave2 root]# mongodump --host=localhost:27017  --db=mydb --collection=users  --out=/tmp/root/mongodump0712 
2018-07-12T10:07:27.894+0800    writing mydb.users to 
2018-07-12T10:07:27.896+0800    done dumping mydb.users (2 documents)
[root@slave2 root]# cd /tmp/root
[root@slave2 root]# ls
3604abd2-a359-4c53-a7b4-e4ea84185801  3604abd2-a359-4c53-a7b4-e4ea841858017799130181720133073.pipeout  dump  hive.log  hive.log.2018-07-11  mongodump0712
[root@slave2 root]# ll
total 624
drwx------. 2 root root      6 Jul 12 09:34 3604abd2-a359-4c53-a7b4-e4ea84185801
-rw-r--r--. 1 root root      0 Jul 12 09:34 3604abd2-a359-4c53-a7b4-e4ea841858017799130181720133073.pipeout
drwxr-xr-x. 5 root root     44 Jul 12 10:04 dump
-rw-r--r--. 1 root root  88700 Jul 12 09:39 hive.log
-rw-r--r--. 1 root root 547126 Jul 11 21:07 hive.log.2018-07-11
drwxr-xr-x. 3 root root     18 Jul 12 10:07 mongodump0712
[root@slave2 root]# cd mongodump0712/
[root@slave2 mongodump0712]# ls
mydb
[root@slave2 mongodump0712]# cd mydb
[root@slave2 mydb]# ls
users.bson  users.metadata.json    

2.     将dump文件上传到hdfs

hdfs dfs -mkdir /user/hive/warehouse/mongo

hdfs dfs -put /tmp/root/mongodump0712/mydb/users.bson /user/hive/warehouse/mongo/

[root@slave2 mydb]# hdfs dfs -mkdir /user/hive/warehouse/mongo 

[root@slave2 mydb]# hdfs dfs -put /tmp/root/mongodump0712/mydb/users.bson /user/hive/warehouse/mongo/  

3.     创建表并测试

hive> create EXTERNAL table muser
    > (
    >   id string,
    >   userid string,
    >   age bigint,
    >   status string
    > )
    > row format serde 'com.mongodb.hadoop.hive.BSONSerDe'
    > WITH SERDEPROPERTIES('mongo.columns.mapping'='{"id":"_id","userid":"user_id","age":"age","status":"status"}')
    > stored as inputformat 'com.mongodb.hadoop.mapred.BSONFileInputFormat'
    > outputformat 'com.mongodb.hadoop.hive.output.HiveBSONFileOutputFormat'
    > location '/user/hive/warehouse/muser';
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:hdfs://ns1/user/hive/warehouse/muser is not a directory or unable to create one)
hive> create EXTERNAL table muser
    > (
    >   id string,
    >   userid string,
    >   age bigint,
    >   status string
    > )
    > row format serde 'com.mongodb.hadoop.hive.BSONSerDe'
    > WITH SERDEPROPERTIES('mongo.columns.mapping'='{"id":"_id","userid":"user_id","age":"age","status":"status"}')
    > stored as inputformat 'com.mongodb.hadoop.mapred.BSONFileInputFormat'
    > outputformat 'com.mongodb.hadoop.hive.output.HiveBSONFileOutputFormat'
    > location '/user/hive/warehouse/mongo';
OK
Time taken: 0.123 seconds
hive> select * from muser;
OK
5b456e33a93daf7ae53e6419        abc123  58      D
5b45705ca93daf7ae53e8b2a        bcd001  45      C
Time taken: 0.181 seconds, Fetched: 2 row(s)

使用Mongo dump 将数据导入到hive的更多相关文章

  1. 把HDFS上的数据导入到Hive中

    1. 首先下载测试数据,数据也可以创建 http://files.grouplens.org/datasets/movielens/ml-latest-small.zip 2. 数据类型与字段名称 m ...

  2. 用sqoop将mysql的数据导入到hive表中

    1:先将mysql一张表的数据用sqoop导入到hdfs中 准备一张表 需求 将 bbs_product 表中的前100条数据导 导出来  只要id  brand_id和 name 这3个字段 数据存 ...

  3. 使用 sqoop 将mysql数据导入到hive表(import)

    Sqoop将mysql数据导入到hive表中 先在mysql创建表 CREATE TABLE `sqoop_test` ( `id` ) DEFAULT NULL, `name` varchar() ...

  4. 使用sqoop将mysql数据导入到hive中

    首先准备工具环境:hadoop2.7+mysql5.7+sqoop1.4+hive3.1 准备一张数据库表: 接下来就可以操作了... 一.将MySQL数据导入到hdfs 首先我测试将zhaopin表 ...

  5. 大数据入门到精通19--mysql 数据导入到hive数据中

    一.正常按照数据库和表导入 \\前面介绍了通过底层文件得形式导入到hive的表中,或者直接导入到hdfs中,\\现在介绍通过hive的database和table命令来从上层操作.sqoop impo ...

  6. Talend 将Oracle中数据导入到hive中,根据系统时间设置hive分区字段

    首先,概览下任务图: 流程是,先用tHDFSDelete将hdfs上的文件删除掉,然后将oracle中的机构表中的数据导入到HDFS中:建立hive连接->hive建表->tJava获取系 ...

  7. 数据导入(一):Hive On HBase

    Hive集成HBase可以有效利用HBase数据库的存储特性,如行更新和列索引等.在集成的过程中注意维持HBase jar包的一致性.Hive与HBase的整合功能的实现是利用两者本身对外的API接口 ...

  8. Sqoop-将MySQL数据导入到hive orc表

    sqoop创建并导入数据到hive orc表 sqoop import \ --connect jdbc:mysql://localhost:3306/spider \ --username root ...

  9. 如何将数据导入到hive中

    可以通过多种方式将数据导入hive表 1.通过外部表导入 用户在hive上建external表,建表的同时指定hdfs路径,在数据拷贝到指定hdfs路径的同时,也同时完成数据插入external表. ...

随机推荐

  1. css获取样式

    1)类似id.style.width:只能获取<div style="width:200px;">内联样式</div>里面style里的width,即内联样 ...

  2. for in和for of

  3. java System.arraycopy()

    package study.stage2; import java.util.Arrays; /** * Created by Sandy.Liu on 2017/7/19. */public cla ...

  4. jQuery实现跨域请求

    我们都知道,xhr(XMLHttpRequest)是不允许跨域的.而jQuery的ajax方法是基于xhr的,所以,直接使用它也是无法跨域的.一般的,我们是如下使用$.ajax方法的: $.ajax( ...

  5. taro 项目、代码说明

    入口文件的生命周期: 入口文件继承自 Component 组件基类,它同样拥有组件生命周期,但因为入口文件的特殊性,他的生命周期并不完整,如下 生命周期方法 作用 说明 componentWillMo ...

  6. 修改 spawn node.exe" ENOENT at notFoundError问题

    Ionic server启动后,出现spawn node.exe" ENOENT at notFoundError ...\node_modules\cross-spawn\lib\enoe ...

  7. 升级ambari、HDP版本(ambari 2.1升级到2.4、HDP2.3升级到2.5)

    转载自:http://blog.csdn.net/levy_cui/article/details/52461377 官方升级版本说明 http://docs.hortonworks.com/HDPD ...

  8. 【java】private关键字

     private关键字(1)修饰成员:可以修饰成员变量和成员方法(2)特点:被private修饰的后的成员只能在本类中被访问 (3)private的应用:定义类的时候,当把成员变量给private修饰 ...

  9. Configure Virtual Serial Port Driver (vspd)注册表

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSBC7\Ports\COM3COM4] “Port1”=”COM3” “Port2”=” ...

  10. MySQL 单条记录长度最大65535

    今天设计表结构,加了几个字段,结果报错了 Ligne trop grande. Le taille maximale d'une ligne, sauf les BLOBs, est 65535... ...