Sqoop安装与使用

  • Post author:
  • Post category:其他


安装

解压

tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

删除压缩包

rm -rf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

复制到指定目录

mv sqoop-1.4.7.bin__hadoop-2.6.0 /opt/yjx/

修改目录名

mv sqoop-1.4.7.bin_hadoop-2.6.0 sqoop-1.4.7

修改配置文件

vim /etc/profile

export SQOOP_HOME=/opt/yjx/sqoop-1.4.7
export PATH=$SQOOP_HOME/bin:$PATH

让配置文件生效

source /etc/profile

连接mysql的包

cp ~/mysql-connector-java-5.1.32-bin.jar /opt/yjx/sqoop-1.4.7/lib/

添加Hive的Jar包

cp /opt/yjx/apache-hive-3.1.2-bin/lib/hive-exec-3.1.2.jar /opt/yjx/sqoop-1.4.7/lib/.

修改sqoop配置文件

cd /opt/yjx/sqoop-1.4.7/conf/

cp sqoop-env-template.sh sqoop-env.sh

vim sqoop-env.sh

export HADOOP_COMMON_HOME=/opt/yjx/hadoop-3.1.2
export HADOOP_MAPRED_HOME=/opt/yjx/hadoop-3.1.2
export HIVE_HOME=/opt/yjx/apache-hive-3.1.2-bin
export HBASE_HOME=/opt/yjx/hbase-2.2.5
export ZOOKEEPER_HOME=/opt/yjx/zookeeper-3.4.5export ZOOCFGDIR=/opt/yjx/zookeeper-3.4.5/conf

修改configure-sqoop

[root@node01 ~]# vim /opt/yjx/sqoop-1.4.7/bin/configure-sqoop

删除掉HCatalog,Accumulo检查(切记从后向前删除)

179-196 18dd

134-143 10dd

82-100 19dd

验证

[root@node01 ~]# sqoop version

[root@node01 ~]# sqoop list-databases -connect jdbc:mysql://node01:3306/ -username root -password 123456

启动集群

【123】zkServer.sh start

【1】start-all.sh.

【1】start-hbase.sh

【1】hive –service metastore

【1】hiveserver2

将普通数据库的数据导入到hdfs中

首先启动集群


执行将emp表中数据全部导入

sqoop import \
--connect jdbc:mysql://node01:3306/scott \
--username root \
--password 123456 \
--table emp \
--target-dir /sqoop/empall \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t";

表中的数据就在/sqoop/empall目录下了


查询导入

sqoop import \
--connect jdbc:mysql://node01:3306/scott \
--username root \
--password 123456 \
--target-dir /sqoop/empquery \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--query 'select empno,ename from emp where hiredate >= 1987-07-13 and
$CONDITIONS;'


只导入指定的列

sqoop import \
--connect jdbc:mysql://node01:3306/scott \
--username root \
--password 123456 \
--target-dir /sqoop/empcolumn \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--columns "empno,ename" \
--table emp;


从RDBMS到HDFS关键字导入

sqoop import \
--connect jdbc:mysql://node01:3306/scott \
--username root \
--password 123456 \
--target-dir /sqoop/empkeyword \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--table emp \
--where "deptno=30"


RDBMS到Hive

sqoop import \
--connect jdbc:mysql://node01:3306/scott \
--username root \
--password 123456 \
--table emp \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "," \
--hive-overwrite \
--hive-table hive_emp;

提示:该过程分为两步
第一步将数据导入到HDFS ,默认路径为 /user/root
 第二步将导入到HDFS的数据迁移到Hive仓库


RDBMS到Hbase

sqoop import \
--connect jdbc:mysql://node01:3306/scott \
--username root \
--password 123456 \
--table emp \
--columns "empno,ename,deptno" \
--column-family "info" \
--hbase-create-table \
--hbase-row-key "empno" \
--hbase-table "emp" \
--num-mappers 1 \
--split-by empno;

sqoop1.4.7只支持HBase1.0.1之前的版本的自动创建HBase表的功能

执行

hbase shell

手动创建

hbase> create ‘emp’,‘info’


导出数据

sqoop export \
 --connect jdbc:mysql://node01:3306/scott \
 --username root \
 --password 123456 \
 --table emp \
 --num-mappers 1 \
 --export-dir /sqoop/empall \
 --input-fields-terminated-by "\t"

在软件目录下创建

mkdir options

创建脚本

touch opt/sqoop.opt

vim sqoop.opt

export
--connect
jdbc:mysql://node01:3306/scott
--username
root
--password
123456
--table
emp
--num-mappers
1
--export-dir 
/sqoopdb/emp
--input-fields-terminated-by
"\t"

执行脚本

sqoop –options-file /opt/yjx/sqoop-1.4.7/options/sqoop.opt



版权声明:本文为XGkerwin1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。