使用Mongo dump 将数据导入到hive

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

1.     使用mongodump 将集合导出

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

[[email protected] 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)

[[email protected] root]# cd /tmp/root

[[email protected] root]# ls

3604abd2-a359-4c53-a7b4-e4ea84185801  3604abd2-a359-4c53-a7b4-e4ea841858017799130181720133073.pipeout  dump  hive.log  hive.log.2018-07-11  mongodump0712

[[email protected] 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

[[email protected] root]# cd mongodump0712/

[[email protected] mongodump0712]# ls

mydb

[[email protected] mongodump0712]# cd mydb

[[email protected] 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/

[[email protected] mydb]# hdfs dfs -mkdir /user/hive/warehouse/mongo

[[email protected] 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)

原文地址:https://www.cnblogs.com/abcdwxc/p/9298299.html

时间: 2024-10-13 22:46:15

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

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

Sqoop 将mysql 数据导入到hive(import) 1.创建mysql表 CREATE TABLE `sqoop_test` ( `id` int(11) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 插入数据 2.hive 建表 hive> create external table sqoop_test

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

首先准备工具环境:hadoop2.7+mysql5.7+sqoop1.4+hive3.1 准备一张数据库表: 接下来就可以操作了... 一.将MySQL数据导入到hdfs 首先我测试将zhaopin表中的前100条数据导出来,只要id.jobname.salarylevel三个字段. 再Hdfs上创建目录 hadoop fs -mkdir -p /data/base #用于存放数据 我们cd到sqoop目录下执行命令 # \ 用于换行bin/sqoop import --connect jdbc

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

首先,概览下任务图: 流程是,先用tHDFSDelete将hdfs上的文件删除掉,然后将oracle中的机构表中的数据导入到HDFS中:建立hive连接->hive建表->tJava获取系统时间->tHiveLoad将hdfs上的文件导入到hive表中. 下面介绍每一个组件的设置: tHDFSDelete_1: 机构: tHDFSOutput_1: hive: tHiveCreateTable: tJava_1: tHiveLoad_1: 在Context下面建一个内容变量: 这个内容变

数据导入(一):Hive On HBase

Hive集成HBase可以有效利用HBase数据库的存储特性,如行更新和列索引等.在集成的过程中注意维持HBase jar包的一致性.Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类. 整合hive与hbase的过程如下: 1.将HBASE_HOME下的 hbase-common-0.96.2-hadoop2.jar 和 zookeeper-3.4.5.jar 拷贝(覆盖)到HIVE_HOME/l

Elasticsearch+Mongo亿级别数据导入及查询实践

数据方案: 在Elasticsearch中通过code及time字段查询对应doc的mongo_id字段获得mongodb中的主键_id 通过获得id再进入mongodb进行查询   1,数据情况: 全部为股票及指数的分钟K线数据(股票代码区分度较高) Elasticsearch及mongodb都未分片且未优化参数配置 mongodb数据量: Elasticsearch数据量: 2,将数据从mongo源库导入Elasticsearch import time from pymongo impor

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

一.先将mysql一张表的数据用sqoop导入到hdfs 1.1.先在mysql中准备一张测试用的表 mysql> desc user_info; +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | id | int

sqoop从oracle数据库抽取数据,导入到hive

环境: hadoop-2.7.5 sqoop-1.4.7 zookeeper-3.4.10 hive-2.3.3 (使用mysql配置元数据库) jdk1.8.0_151 oracle 11.2.0.3.0 经过一番baidu,总算初步成功,现在记录一下中间过程. 1.拷贝hive/conf/hive_site.xml到sqoop/conf目录2.配置sqoop-evn.sh,将变量设置为对应的目录. export HADOOP_COMMON_HOME=/home/hadoop/hadoop-2

Hive数据导入——数据存储在Hadoop分布式文件系统中,往Hive表里面导入数据只是简单的将数据移动到表所在的目录中!

转自:http://blog.csdn.net/lifuxiangcaohui/article/details/40588929 Hive是基于Hadoop分布式文件系统的,它的数据存储在Hadoop分布式文件系统中.Hive本身是没有专门的数据存储格式,也没有为数据建立索引,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据.所以往Hive表里面导入数据只是简单的将数据移动到表所在的目录中! Hive的几种常见的数据导入方式这里介绍四种:(1).从本地文件系统中

HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)

Hive总结(七)Hive四种数据导入方式 (强烈建议去看) Hive几种数据导出方式 https://www.iteblog.com/archives/955 (强烈建议去看) 把MySQL里的数据导入到HDFS 1.使用MySQL工具手工导入 把MySQL的导出数据导入到HDFS的最简单方法就是,使用命令行工具和MySQL语句. 为了导出整个数据表或整个数据库的内容,MySQL提供了mysqldump工具. 比如 SELECT  col1,col2 FORM TABLE INTO OUTFI