安装使用sqoop

安装并使用sqoop

目录

安装并使用sqoop

安装

1.解压

2.重命名,配置环境

3. 配置sqoop-env.sh

4 拷贝mysql驱动包

5 验证sqoop配置是否正确

6连接mysql

实操

1.Sqoop导入

导入hdfs

全量导入

​编辑

查询导入

mysql导入hive

增量导入

2 .Sqoop导出export

默认操作:

更新模式:

调用模式:

3.Sqoop Job作业

1.语法

2.创建

3.验证

4.检查

5.执行

6.免密执行


安装

1.解压

tar -xvf sqoop-1.4.2.bin__hadoop-2.0.0-alpha.tar.gz -C /opt/software/

2.重命名,配置环境

#SQOOP_HOME
export SQOOP_HOME=/opt/software/sqoop
export PATH=$SQOOP_HOME/bin:$PATH

mv sqoop-1.4.2.bin__hadoop-2.0.0-alpha/ sqoop

3. 配置sqoop-env.sh

export HADOOP_COMMON_HOME=/opt/software/hadoop2.7  
export HADOOP_MAPRED_HOME=/opt/software/hadoop2.7
export HIVE_HOME=/opt/software/hive

4 拷贝mysql驱动包

cp /opt/software/hive/lib/mysql-connector-java-5.1.38.jar /opt/software/sqoop/lib

5 验证sqoop配置是否正确

bin/sqoop help

 

6连接mysql

sqoop list-databases --connect jdbc:mysql://master:3306/ --username root --password 123456

 以上安装成功

实操

1.Sqoop导入

1. 导入数据 :从非大数据集群向大数据集群中传输数据

在mysql里面建库建表方便使用

导入hdfs

全量导入

bin/sqoop import \

--connect jdbc:mysql://master:3306/school?charset-utf-8 \

--username root \

--password 000000 \

--table stu \

--target-dir /user/hive/warehouse/sqooptest \
//--delete-target-dir \  //自行选择

--num-mappers 1 \
//--fields-terminated-by '\t'


//查询导入 
//自定义的查询导入 $CONDITIONS 传递参数 保证写出顺序
--query 'select name,sex from stu where id <=1 and $CONDITIONS;'

查询导入

(where 过滤和query查询)

版本不支持原因 ,把--table stu 删掉就好了

 

成功

 

mysql导入hive

bin/sqoop import \
--connect jdbc:mysql://master:3306/school?charset-utf8 \
--username root \
--password 123456 \ 
--table stu \ 
--hive-import \
--hive-table school.stu \
--hive-overwrite -m 1

//分隔符--fields-terminated-by ',' \ 
//没有就创建,有的话会报错
--hive-create-table 

发现报错,删掉,重跑

 

 

hive查询,导入成功

$sqoop export (generic-agrs)(export-args) 

增量导入

仅导入新添加的表中的行的技术

  • --check-columns指定列
  • --incremental :mode

append追加,对大于last-value指定的值之后的记录进行追加导入

sqoop import \
--connect jdbc:mysql://master:3306/school \
--username root \
--password 000000 \
--table stu \
--target-dir /user/hive/warehouse/sqooptest \
--incremental append \
--check-column id \
--last-value 4

lastmodified :最后的修改时间,追加last-value指定的日期之后的记录

lastmodified模式:

append  附加

merge-key 合并 (该模式是进行一次完整的mapreduce操作)

//更新id为1的字段
update stu set name="ccc" where id =1;
//这条数据时间更新为更新数据时的系统时间
sqoop import \
--connect jdbc:mysql://master:3306/school \
--username root \
--password 000000 \
--table stu \
--target-dir /user/hive/warehouse/sqooptest \
--incremental lastmodifiedresult \
--check-column id \
--last-value "2019-05-28 18:42:06" \
--m 1 \
--merge-key id
  • --last-value:value
sqoop import \
--connect jdbc:mysql://master:3306/school \
--username root \
--password 000000 \
--table stu \
--target-dir /user/hive/warehouse/sqooptest \
--incremental lastmodified \
--check-column id \
--last-value 5 \
--m 1 \
--apend

lastmodified模式处理增量时,会将大于等于last-value值的数据当作增量处理

自从上次导入后的最大值(大于指定的值)(也可以自己设定)

bin/sqoop import \
--connect jdbc:mysql://master:3306/school?charset-utf8 \
--username root \
--password 123456 \ 
--table stu \ 
--hive-import \
--hive-table school.stu \
--hive-overwrite -m 1

2 .Sqoop导出export

其中的目标表/数据自己准备

默认操作:

将文件中的数据使用 insert 语句插入到表中

Hdfs导入mysql

bin/sqoop import \
--connect jdbc:mysql://master:3306/school?charset-utf8 \
--username root  \
--password 123456  \ 
--table student \ 
--export-dir /user/hive/warehouse/sqooptest/student
--fields-terminated-by '\t'

更新模式:

Sqoop将生成update替换数据库现有记录的语句

--update-key :根据某个字段进行更新(可以指定多个字段,用逗号隔开)

bin/sqoop import \
--connect jdbc:mysql://master:3306/school?charset-utf8 \
--username root  \
--password 123456  \ 
--table student \ 
--export-dir /user/hive/warehouse/sqooptest/student
--update-key id \
--update-mode updateonly \

--updatemod:指定 updateonly 默认模式,仅更新已存在数据记录,不插入新纪录

bin/sqoop import \
--connect jdbc:mysql://master:3306/school?charset-utf8 \
--username root  \
--password 123456  \ 
--table student \ 
--export-dir /user/hive/warehouse/sqooptest/student
--update-key id \
--update-mode allowinsert \

调用模式:

为每一条记录创建一个储存过程调用

3.Sqoop Job作业

1.语法

$sqoop job (generic-agrs)(export-args) 
  [--[subtool-name](subtool-args)]

2.创建

sqoop job --create itcastjob -- import --connect jdbc:mysql://master:3306/school \
--username root \
--password 000000 \
--target-dir /user/hive/warehouse/sqooptest3 \
--table student \
--m 1

3.验证

sqoop job --list

4.检查

sqoop job --show itcastjob

5.执行

sqoop job --exec itcastjob

6.免密执行

存在如下配置(sqoop-site.xml)

bin/sqoop import \
--connect jdbc:mysql://master:3306/school?charset-utf8 \
--username root  \
--password-file /input/sqoop/pwd/itcastmysql.pwd  \ 
--target-dir /user/hive/warehouse/sqooptest3 \
--table student \ 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值