Sqoop导入导出的几个例子
node2
Sqoop参数介绍_其他命令_导入导出
导入
例一:从DBMS到HDFS
1.node4下启动mysql
service mysqld start
mysql -u root -p
输入密码:123
2.node4下创建test数据库
create database test;
创建psn表
3.node2中创建sqoop_test,编辑sqoop1
import
--connect
jdbc:mysql://node4/test
--username
root
--password
123
--as-textfile
--columns
id,name,msg
--table
psn
--delete-target-dir
--target-dir
/sqoop/data
-m
1
4.执行命令--从DBMS导入到HDFS
sqoop --options-file sqoop1//选项使用脚本
sqoop --options-file sqoop1
例二:从DBMS到Hive
注意!
$CONDITIONS规定
--as-textfile //以文本的方式进行存储
/sqoop/tmp先将数据导入hdfs的临时目录,再将数据导入hive的目录
1.node4下启动mysql
service mysqld start
mysql -u root -p
输入密码:123
2.node4下创建test数据库
create database test;
创建psn表
3.node2中创建sqoop_test,编辑sqoop2
-e,--query和--table两个选项是冲突的,因为一个是指定单表,一个是指定多表的导入;
--warehouse-dir指定导入到hive中的时候到底从哪个目录下面导入;这个选项和hive中的warehouse-dir
配置项很像;
--hive-home指定hive的安装目录,如果节点上面配置了环境变量,并且导入了需要的jar包,那么就不需要
指定了;
sqoop将关系型数据库中的数据导入到hive中去的话,首先需要将数据导入到hdfs上面,因此需要先指定
hdfs上面一个临时存储这些数据的目录,然后才会把hdfs上面的数据导入到hive中去;也就是首先使用mr
到hdfs上面,然后在创建hive的表;可以再打开一个终端,查看hive中的表创建的情况;创建的时候
首先在mysql通过查看表字段,然后在hive中创建;我们没有指定hive表存放在什么位置。这个位置是由
hive的配置文件指定的,需要在那个位置查看;
import
--connect
jdbc:mysql://node4/test
--username
root
--password
123
--as-textfile
--query
'select id, name, msg from psn where id like "1%" and $CONDITIONS'
--delete-target-dir
-target-dir
/sqoop/tmp
-m
1
--hive-home
/home/hive-1.2.1
--hive-import
--create-hive-table
--hive-table
t_test
4.执行命令--从DBMS导入到Hive
先启动hive服务端node2: hive --service metastore
再启动hive客户端node1:
hive
sqoop --options-file sqoop2
node1查看表t_test是否生成
导出
例三:从HDFS到DBMS
指定HDFS中数据对应的目录
1.node4下启动mysql
service mysqld start
mysql -u root -p
输入密码:123
2.node4下创建test数据库
create database test;
创建h_psn表
3.node2中创建sqoop_test,编辑sqoop3
export
--connect
jdbc:mysql://node4/test
--username
root
--password
123
-m
1
--columns
id,name,msg
--export-dir
/sqoop/data
--table
h_psn
4.执行sqoop命令
查看mysql中的表,看数据是否导入
例四:从Hive到DBMS