【Hive】用Sqoop实现数据HDFS到mysql到Hive

大数据协作框架

“大数据协作框架”其实是一个统称,主要是以下四个框架

  • 数据转换工具    Sqoop
  • 文件收集库框架    Flume
  • 任务调度框架    Oozie
  • 大数据WEB工具Hue

 

Sqoop作用

将关系数据库中的某张表数据抽取到Hadoop的HDFS文件系统中,底层运行的还是MapReduce。

利用MapReduce加快数据传输速度。

批处理方式进行数据传输。

也可以将HDFS上的文件数据或者Hive表中的数据导出到关系型数据库当中的某张表中。

 

HDFS →RDBMS

sqoop export \
--connect jdbc:mysql://xxx:3306/xxx \
--username xxx \
--password xxx \
--table xxx \
--export-dir xxx

RDBMS→Hive

sqoop import \
--connect jdbc:mysql://xxx:3306/xxx \
--username xxx \
--password xxx \
--fields-terminated-by "\t" \
--table xxx \
--hive-import \
--hive-table xxx

Hive→RDBMS

sqoop export \
--connect jdbc:mysql://xxx:3306/xxx \
--username xxx \
--password xxx \
--table xxx \
--export-dir xxx \
--input-fields-terminated-by '\t'

RDBMS→HDFS

sqoop import \
--connect jdbc:mysql://xxx:3306/xxx \
--username xxx \
--password xxx \
--table xxx \
--target-dir xxx

规律:

  1. 从RDBMS导入到HDFS或者Hive中的都使用import;从HDFS或者Hive导出到RDBMS中的都使用export;以HDFS和Hive为参考,根据数据流向选择关键字。
  2. connect、username、password、table四个参数为每一种传输都必须的;其中connect参数格式均为--connect jdbc:mysql://主机名:3306/数据库名(使用mysql数据库);table是指明mysql中的表名。
  3. export-dir参数只有在导出数据到RDBMS中时才会用到,含义为表在hdfs中存放的路径。

区别:

  • HDFS →RDBMS:指明table:mysql中的表,需要自行先创建;指明export-dir:HDFS中数据的存储路径
  • RDBMS→Hive:指明fields-terminated-by:指定分隔符,分隔符指的是存放在Hive中的数据的分隔符,如果目标将存储在Hive中可理解为编码格式,若目标将存储在RDBMS上,则可理解为解码格式;指明table:mysql中的表名;指明hive-import:导入到hive操作;指明hive-table:hive中的表名。注意:table参数不可以与用户家目录下已存在的目录重名,因为sqoop导数据到hive会先将数据导入到HDFS上,然后再将数据load到hive中,最后把这个目录再删除掉。
  • Hive→RDBMS:指明table:mysql中的表名;指明export-dir:hive在hdfs中存储的路径;指明hive-table:hive中的表名。
  • RDBMS→HDFS:指明table:mysql里的表名;指明target-dir:hdfs存储数据的目录;

 

Sqoop安装

配置Sqoop1.x

conf目录【sqoop-env-template.sh】

  • export HADOOP_COMMON_HOME=Hadoop目录
  • export HADOOP_MAPRED_HOME=Hadoop目录
  • export HIVE_HOME=Hive目录
  • export ZOOCFGDIR=Zookeeper目录

将mysqlJDBC驱动包拷到sqoop的lib目录下

测试sqoop

bin/sqoop list-databases \
--connect jdbc:mysql://主机名:3306 \
--username root \
--password 123456 \

查看本地mysql


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| metastore          |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| my_user        |
+----------------+
1 row in set (0.00 sec)

mysql> desc my_user;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | tinyint(4)   | NO   | PRI | NULL    | auto_increment |
| account | varchar(255) | YES  |     | NULL    |                |
| passwd  | varchar(255) | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)


mysql> select * from my_user;
+----+----------+----------+
| id | account  | passwd   |
+----+----------+----------+
|  1 | admin    | admin    |
|  2 | johnny   | 123456   |
|  3 | zhangsan | zhangsan |
|  4 | lisi     | lisi     |
|  5 | test     | test     |
|  6 | qiqi     | qiqi     |
|  7 | hangzhou | hangzhou |
+----+----------+----------+
7 rows in set (0.00 sec)

hive创建相同结构的空表

hive (test)> create table h_user(                            
           
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值