1.官方文档:https://docs.mongodb.com/ecosystem/tools/hadoop/

2.Hive介绍:

  Hive特点:  

  1.hive是一个数据仓库,和oracle,mysql等数据仓库相比,它底层依赖于hdfs。

  2.hive是sql解析引擎,将sql语句转换成Map/Reduce任务,然后在hadoop hdfs上执行

  3.hive的表其实就是一个目录,hive中表的数据就在文件中

  Hive元数据:

  Hive将元数据存储在数据库中( metastore),支持mysql,derby(默认),oracle

  元数据:包括表的名字,表的列,分区,及属性,表的属性(是否为外部表),以及表的存放目录,不包括任何数据

3.Hive安装:

  Hive运行模式:

    1.嵌入模式:hive的元数据保存在其自带的derby中,同一时间只允许一个连接,多用于demo

    2.本地模式:元数据库在mysql中,mysql与hive在同一物理机器上。

    3.远程模式:同2,只是mysql运行在别的机器上。

  本地模式的安装:用mysql存储元数据

    1.安装mysql(参考官网)

    2.将mysql java-driver放入$Hive_HOME/lib中

    3.创建hive-site.xml,如下,注意文件名强制是这个。  

     同时注意&在xml中需要转义处理,即&

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;connectTimeout=10000</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hivemeta</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hivemeta</value>
</property>
</configuration>

  注意你在xml种写的user应该在mysql种有远程登录的权限

    创建mysql用户并赋予全部权限,先root账户登录,再执行

    grant all privileges on *.* to testhive@"%" identified by "testhive"  // *.*代表所有表,“%“代表出本机以外的所有ip,testhive为用户名和密码

    grant all privileges on *.* to testhive@"localhost" identified by "testhive"

    flush privileges

  3.启动mysql.

  4.执行bin/hive,输入show tables,输出OK,则安装成功。

    如果出现 FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient,或是hive中输入任何命令都无反应,则说明metastore启动失败,表示你的元数据连接方面失败。此时执行

    hive -hiveconf hive.root.logger=debug,console -service metastore 启动mestore并设置错误信息级别,根据错误信息排错。

    还可netstat -an|grep 3306查看mysql端口连接情况,如果hive元数据库连接成功,连接状态应该是established.

4.开始导入数据

   1.确保hive可以正常使用。

   2.参考https://github.com/mongodb/mongo-hadoop/wiki/Hive-Usage

   3.如果你的hive版本和我一样也是2.3.x,那么恭喜你,因为会遇到许多的classNotfoundException

   准备工作:在hdsf创建目录/user/hive/warehouse,并将bson文件上传至 hdfs中。启动hdfs.

   4.具体步骤:

      1.下载3个包:core, hive, and the Java driver,导入到lib中

      2.根据自己的业务规则编写sql。

      3.执行hive -hiveconf hive.root.logger=debug,console -f xxx.sql。

      4.如果返回ok,执行成功,否则检查错误信息。

      5.以我hive2.3.3+mongodb4.x的环境来说,遇到的问题:

1.类org.apache.hadoop.hive.serde2.SerDe未找到,github中的MongoStorageHandler.java长期未更新,查看lib中的jar包发现这个类只

在1.x的hive中的lib才有,

解决:将hive-serde-1.2.2.jar。

2.缺少某些bson类,使用了1.x的lib中可能使用了 2.x没有的相关的bson

解决:将bson-3.8.0.jar导入到lib中。

    

将Mongodb的表导入到Hive中的更多相关文章

  1. Sqoop- sqoop将mysql数据表导入到hive报错

    sqoop将mysql数据表导入到hive报错 [root@ip---- lib]# sqoop import --connect jdbc:mysql://54.223.175.12:3308/gx ...

  2. oracle 表导入到powerDesigner 中

    最近不忙,之前一直是用powerDesigner看表结构,还没自己导入过,今天试试 oracle 表导入到powerDesigner 中步骤: 1.File--->reverse Enginne ...

  3. 使用Sqoop,最终导入到hive中的数据和原数据库中数据不一致解决办法

            Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL , ...

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

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

  5. 使用Talend Open Studio将数据分步从oracle导入到hive中

    先使用Tos建立模型,将Oracle中的数据导入到本地: build job后,形成独立可以运行的程序: 将生成的zip文件,上传到hadoop集群上,有hive环境的机器上: [hive@h1 wo ...

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

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

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

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

  8. 如何将EXCEL表导入ORACLE数据库中?【转】

    来源:https://zhidao.baidu.com/question/383828330.html?qbl=relate_question_2&word=excel%20%B1%ED%CA ...

  9. 自动将每日的日志增量导入到hive中

    一:大纲介绍 1.导入方式 load data local inpath 'local_file_path' into table tbname partition (date='',hour='') ...

随机推荐

  1. Mongo Delete-19

    数据初始化 db.inventory.insertMany( [ { item: "journal", qty: 25, size: { h: 14, w: 21, uom: &q ...

  2. [置顶] 利用Python 提醒实验室同学值日(自动发送邮件)

    前言: 在实验室里一直存在着一个问题,就是老是有人忘记提醒下一个人值日,然后值日就被迫中断了.毕竟良好的        卫生环境需要大家一起来维护的!没办法只能想出一些小对策了. 解决思路: 首先,我 ...

  3. C++扬帆远航——6(三色球)

    /* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:sanseqiu.cpp * 作者:常轩 * 完成日期:2016 ...

  4. C++扬帆远航——12(抓小偷)

    /* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:zhaoxiaotou.cpp * 作者:常轩 * 微信公众号: ...

  5. 这几个IDEA高级调试技巧,用完就是香

    一个项目启动两次 测试分布式项目时,经常要一个项目启动2次,不用将一个项目打开多次启动,配置一下即可 1.点击Edit Configurations 2.勾选Allow parallel run 3. ...

  6. 小白学 Python 数据分析(10):Pandas (九)数据运算

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  7. swagger 以及swaggerUI使用的步骤

    1.swagger,可以这么理解swagger是接口规范.Rest Api 传递参数的除了get请求外,put post,需要传递json.或者就是直接都通过传递json到后台 这里主要介绍一下spr ...

  8. 在高德地图上用svg.js绘制简单图形

    这段时间做的一个项目,需要在地图上绘制简单的图形.在学习高德地图JS API的过程中,发现高德地图提供的点.线等API并不能满足我的需求,还好它开放了自定义图层CustomLayer,官方说自定义图层 ...

  9. C++ const用法,看这一篇就够了!

    本文主要介绍const修饰符在C++中的主要用法,下面会从两个方面进行介绍:类定义中使用const.非类定义中使用const 1. 非类定义中使用const 非类定义中使用const是指:在除了类定义 ...

  10. 2018-05-04 圣杯布局 and 双飞翼布局,display:flex

    看到一个神奇的布局,啥都不说了 直接贴代码 要让main在中间,left在左边,可以通过Flex容器下的项目的属性“order”属性来设置:对于order属性:定义项目的排列顺序,越小越靠前,默认为0 ...