Sqoop是干什么的
Sqoop是一个能将传统关系型数据库中的数据导入到hive,hdfs,hbase中的工具,也可以将hive,hdfs,hbase中的数据导入到传统关系型数据库中。
Sqoop的原理
Sqoop是将任务转化成MR任务执行
主要是对MR任务中的inputformat,outputformat进行定制
Sqoop的安装
1.将安装包导入到linux系统中
2.将安装包解压
3.将配置文件改名
cp sqoop-env-template.sh sqoop-env.sh
4.配置sqoop-env.sh文件
export HADOOP_COMMON_HOME=/home/hduser/software/hadoop-2.7.2
export HADOOP_MAPRED_HOME=/home/hduser/software/hadoop-2.7.2
export HBASE_HOME=/home/hduser/software/hbase-1.3.1/
export HIVE_HOME=/home/hduser/software/hive-1.2.1
export ZOOCFGDIR=/home/hduser/software/zookeeper-3.4.10
5.将mysql的连接jdbc文件导入到sqoop的lib文件下面
cp mysql-connector-java-5.1.32-bin.jar /home/hduser/software/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib
检验
1.用sqoop help 命令
当出现两个警告的时候说明安装成功
2.启动mysqll
sqoop-list-databases --connect jdbc:mysql:zhblinux8:3306/ --username root --password xxxx
当输出为mysql的所有数据库的时候说明安装成功
用Sqoop将数据导入hdfs、hive、hbase
从mysql导入到hdfs
sqoop import \
--connect jdbc:mysql://linux8zhb:3306/company \
--username root \
--password xxxx \
--table staff \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"
从mysql有选择的导入hdfs
sqoop import \
--connect jdbc:mysql://linux8zhb:3306/company \
--username root \
--password xxxx \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--query 'select id,name from staff where id<2 and $CONDITIONS;'
从mysql选择列导入hdfs
sqoop import \
--connect jdbc:mysql://linux8zhb:3306/company \
--username root \
--password admin \
--table staff \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--column id,name \
--fields-terminated-by "\t" \
从mysql导入hive
sqoop import \
--connect jdbc:mysql://linux8zhb:3306/company \
--username root \
--password admin \
--table staff \
--hive-import \
--hive-overwrite \
--num-mappers 1 \
--fields-terminated-by "\t" \
--hive-table staff_dd
从mysql导入hbase
注:这个表需要自己先在hbase中创建
sqoop import \
--connect jdbc:mysql://linux8zhb:3306/company \
--username root \
--password admin \
--table staff \
--hbase-create-table \
--hbase-table "hbase_company" \
--column-fimilay "info" \
--columns "id,name,gender" \
--hbase-row-key "id" \
--num-mappers 1 \
--split-by "id"
用Sqoop将数据导出到mysql
从hive、hdfs将数据导出到mysql
sqoop export \
--connect jdbc:mysql:linux8zhb:3306/company \
--username root \
--password admin \
--table staff_ee \
--num-mappers 1 \
--input-fields-terminated-by "\t" \
--export-dir /user/hive/warehouse/staff_dd