Sqoop实战

Sqoop

安装

  • 下载 sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz 网址
  • 配置环境变量
1
2
3
export HADOOP_COMMON_HOME=/home/hadoop/opt/hadoop-2.6.0

export HADOOP_MAPRED_HOME=/home/hadoop/opt/hadoop-2.6.0
  • 下载 mysql jra包 地址 把 mysql-connector-java-5.1.45-bin.jar 复制到 SQOOP_HOME/lib

一些例子:

把 mysql 数据导入到 hdfs
1
2
3
4
5
6
7
8
9
10
11
# 链接数据库  这个只做提示作用,相当于是个变量
$c = " --connect jdbc:mysql://192.168.0.89:3306/tob --username web --password passwd "

# 查看数据库列表
sqoop list-databases $c

-- 把表 tob_dealer 数据导出到 /tmp 目录, 为 hadoop 文件系统目录
bin/sqoop import $c --table tob_dealer --target-dir /tmp

-- 把 tob_dealer 表中的 id,link_phone 字段导入到 hdfs 的 /tmp 目录下
bin/sqoop import $c --table tob_dealer --columns "id,link_phone" -m 1 --target-dir /tmp
把 mysql 数据导入到 Hive 数据仓库表
1
2
3
4
5
6
7
8
9
10
11
12
// -m 1 表示 map/reduce 作业的个数
//不指定表名称 会自动创建一张同名表(tob_dealer)来保存数据
bin/sqoop import --hive-import $c --table tob_dealer -m 1

//指定表名称 hive_tob_dealer。 如果不存在,hive 会自动创建
bin/sqoop import --hive-import $c --table tob_dealer -m 1 --hive-table hive_tob_dealer

//指定 Where 条件。 只导id=1的得数据
bin/sqoop import --hive-import $c --table tob_dealer -m 1 --hive-table hive_tob_dealer --where 'id=1'

//指定 Select 条件。 只导id=1的得数据, 不需要指定 table。必须指定 and $CONDITIONS
bin/sqoop import --hive-import $c -m 1 --query 'select * from tob_dealer where id > 10 and $CONDITIONS' --target-dir "/tmp/select" --hive-table hive_tob_dealer
hive 导出到 Mysql
1
2
3
-- 把 /tmp 目录下的数据导出到 mysql 的表 tob_dealer 中
-- 需要先在 mysql 创建对应的表
bin/sqoop export $c --table tob_dealer --export-dir "/tmp"

sqoop 遇到的问题

  • Error: Could not find or load main class org.apache.sqoop.Sqoop 这是因为找不到sqoop-1.4.5.jar文件导致的。
1
2
3
4
5
修改 $SQOOP_HOME/bin/sqoop 脚本最后一行: 
exec ${HADOOP_COMMON_HOME}/bin/hadoop org.apache.sqoop.Sqoop "$@"
改为
exec ${HADOOP_COMMON_HOME}/bin/hadoopjar $SQOOP_HOME sqoop-1.4.5.jar org.apache.sqoop.Sqoop "$@"
即:显示指定sqoop-1.4.5.jar文件的所在位置。
  • 导数据的时候报错: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.
1
2
3
vi ~/.bashrc
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/hive/lib/*
source ~/.bash_profile

参考列表