Sqoop数据导入导出(MySQL,HDFS,Hive,HBse)

系统环境

Linux Ubuntu 16.04

jdk-7u75-linux-x64

hive-1.1.0-cdh5.4.5

hadoop-2.6.0-cdh5.4.5

sqoop-1.4.5-cdh5.4.5

hbase-1.0.0-cdh5.4.5

mysql-5.7.24

相关知识

在导入开始之前,Sqoop使用JDBC来检查将要导入的表。他检索出表中所有的列以及列的SQL数据类型。这些SQL类型(varchar、integer)被映射到Java数据类型(String、Integer等),在MapReduce应用中将使用这些对应的Java类型来保存字段的值。Sqoop的代码生成器使用这些信息来创建对应表的类,用于保存从表中抽取的记录。Sqoop启动的MapReduce作业用到一个InputFormat,他可以通过JDBC从一个数据库表中读取部分内容。

Hadoop提供的DataDriverDB InputFormat能为查询结果进行划分传给指定个数的map任务。为了获取更好的导入性能,查询会根据一个“划分列”来进行划分。Sqoop会选择一个合适的列作为划分列(通常是表的主键)。在生成反序列化代码和配置InputFormat之后,Sqoop将作业发送到MapReduce集群。Map任务将执行查询并将ResultSet中的数据反序列化到生成类的实例,这些数据要么直接保存在SequenceFile文件中,要么在写到HDFS之前被转换成分割的文本。Sqoop不需要每次都导入整张表,用户也可以在查询中加入到where子句,以此来限定需要导入的记录。

在这里插入图片描述

			(Sqoop数据导入原理图)

Sqoop导出功能的架构与其导入功能非常相似,在执行导出操作之前,Sqoop会根据数据库连接字符串来选择一个导出方法。一般为JDBC。然后,Sqoop会根据目标表的定义生成一个Java类。这个生成的类能够从文本文件中解析记录,并能够向表中插入合适类型的值。接着会启动一个MapReduce作业,从HDFS中读取源数据文件,使用生成的类解析记录,并且执行选定的导出方法。

在这里插入图片描述

			(Sqoop 数据导出原理图)

任务内容

1.练习使用Sqoop将数据在Mysql与HDFS之间的导入导出。

2.练习使用Sqoop将数据从Mysql中导入到HBase中。

3.练习使用Sqoop将数据在Mysql与Hive之间的导入导出。

任务步骤

现有buyer_log表,存储了买家行为日志,包含四个字段(ID,用户ID,时间,IP,操作类型)。

ID     用户ID       时间                    IP          操作类型
461    10181    2010-03-26 19:45:07    123.127.164.252    1
462    10262    2010-03-26 19:55:10    123.127.164.252    1
463    20001    2010-03-29 14:28:02    221.208.129.117    2
464    20001    2010-03-29 14:28:02    221.208.129.117    1
465    20002    2010-03-30 10:56:35    222.44.94.235    2
466    20002    2010-03-30 10:56:35    222.44.94.235    1
481    10181    2010-03-31 16:48:43    123.127.164.252    1
482    10181    2010-04-01 17:35:05    123.127.164.252    1
483    10181    2010-04-02 10:34:20    123.127.164.252    1
484    20001    2010-04-04 16:38:22    221.208.129.38    1

1.首先检查Hadoop相关进程,是否已经启动。若未启动,切换到/apps/hadoop/sbin目录下,启动Hadoop。

jps  
cd /apps/hadoop/sbin  
./start-all.sh  

在这里插入图片描述
2.在Linux本地新建/data/sqoop2目录。

mkdir -p /data/sqoop2  

切换到/data/sqoop2目录下,使用wget命令,下载http://192.168.1.100:60000/allfiles/sqoop2中的文件。


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值