sqoop安装与快速使用-----你想要的sqoop都在这里

场景
传统型缺点,分布式存储。把传统型数据库数据迁移。

Sqoop安装部署

1)下载安装包 
2)解压
	tar -zxvf .tar
3)修改配置
	vi sqoop-env.sh
	export HADOOP_COMMON_HOME=/root/hd/hadoop-2.8.4 
	export HADOOP_MAPRED_HOME=/root/hd/hadoop-2.8.4 
	export HIVE_HOME=/root/hd/hive
	export ZOOCFGDIR=/root/hd/zookeeper-3.4.10/conf
4)发送mysql驱动到lib下
5)检测是否安装成功 bin/sqoop help

import

1、数据从mysql中导入到hdfs当中
	bin/sqoop import --connect jdbc:mysql://bigdata:3306/sq --username hive --password hive --table user --target-dir /sqoop/datas --delete-target-dir --num-mappers 1 --fields-terminated-by '\t'
	注:在集群中运行,需要提前在mysql中设置权限
	grant all privileges on *.* to root@'%' identified by "password";
	flush privileges;

2、数据mysql中导入到hdfs当中进行筛选
	bin/sqoop import --connect jdbc:mysql://bigdata:3306/sq --username hive --password hive --target-dir /sqoop/selectdemo --delete-target-dir --num-mappers 1 --fields-terminated-by '\t' --query 'select * from user where id =1 and $CONDITIONS'
	注:$CONDITIONS笔记:并行的方式导入结果,每个maptask需要执行SQL查询语句的副本,结果会根据sqoop推测的边界条件分区。
		where必须包含$CONDITIONS。这样每个sqoop程序都会被替换为一个独立的条件。
		用于在多个num-mappers的时候做优化

3、通过where筛选
	bin/sqoop import --connect jdbc:mysql://bigdata:3306/sq --username hive --password hive --target-dir /sqoop/selectdemo --delete-target-dir --num-mappers 1 --fields-terminated-by '\t' --table user  --where 'id=2'

4、mysql导入到hive中
	需要先创建hive表
	过程:先从mysql表移动到hdfs,再从hdfs剪切到hive中,所以运行过程中会产生错误:
		ERROR tool.ImportTool: Import failed: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://192.168.1.9:9000/user/terry/user already exists
		需要先删除

	问题:hiveconf
	解决:
	vi ~/.bash_profile
	export HADOOP_CLASSPATH=$HADOOP_CLASSPASS:/Library/bigdata/apache-hive-2.3.0-bin/lib/*

	cp hive/lib/hive-common-3.0.0.jar sqoop/lib/ 

	bin/sqoop import --connect jdbc:mysql://bigdata:3306/sq --username hive - -password hive --table user --num-mappers 1 --hive-import --fields-terminated-by "\t" --hive-overwrite --hive-table user_sqoop

export

需求:hive/hdfs的数据导出到mysql

1、根据hive中的表创建mysql表
	删除表中原有数据
		truncate table user1;

2、编写sqoop启动命令

	bin/sqoop export --connect jdbc:mysql://bigdata:3306/sq --username hive --password hive --table user1 --num-mappers 1 --export-dir /user/hive/warehouse/user_sqoop --input-fields-terminated-by '\t'

Sqoop打包脚本的使用

1)创建文件夹 
	mkdir sqoopjob

2)创建文件脚本
vi sqoop_job.opt

	export
	--connect jdbc:mysql://bigdata:3306/sq
	--username
	hive
	--password
	hive
	--table
	user1
	--num-mappers
	1
	--export-dir
	/user/hive/warehouse/user_sqoop
	--input-fields-terminated-by
	"\t"
注意:一行命令 一行值

3)执行脚本文件
	bin/sqoop --options-file /root/sqoopjob/job_hdfs2mysql.opt

sqoop常用命令

命令 说明
–import 将数据导入到集群
–export 将集群数据导出
–codegen 将某数据库中表生成javaBean并打包为jar
–eval 查看sql执行结果
–create­-hive­-table 创建hive表
–import­-all­-tables 导入某个数据库中所有表到hdfs中
–list­-tables 列出某个数据库下的所有表
–merge 将hdfs中不同目录下的数据合并在一起
–version V 查看sqoop版本
–help 查看帮助信息

sqoop常用参数

参数 说明
–connect 连接关系型数据库URL
–connection­manager 指定连接管理类
–driver JDBC的driver class
–username 连接数据库的用户名
–password 连接数据库的密码
–verbose 在控制台中打印详细信息
–help 查看帮助
–hive­-import 将关系型数据库导入到hive表中
–hive­-overwrite 覆盖掉hive表中已存在的数据
–create­-hive­-table 创建hive表
–hive­-table 接入已有的hive表
–table 指定关系型数据库的表名

猜你喜欢

转载自blog.csdn.net/weixin_42898914/article/details/85013937