大数据开发之Sqoop篇----sqoop export

sqoop export是指将HDFS上的数据导出到RDBMS上,而在RDBMS上目标表要已经存在了。

输入格式一般是:sqoop export command args / sqoop-export command args

一般的参数(这里我只列出一些我们一定要用的参数,其余的可根据各自的业务场景来挑选):

--connect  用于输入你要连接的数据库url以及相关数据的驱动标示,例如:jdbc:mysql://xxxxxx:3306/database_name,这是连接到某个MySQL数据上的一个库的写法

--driver  用于手动指定一个数据库驱动,一般我们都是将驱动包放在sqoop目录下的lib文件夹里面就好了

--password/-P 分别是显式和隐式地输入数据库用户下的用户密码

--username  指定登入数据库的用户名

输出参数:

--columns  指定要输入字段

--export-dir <dir>    指定HDFS上的文件路径,要将数据输出总是要知道导出哪的数据吧

-m,--num-mappers    指定使用多少个map,如果你要导出的表是没有主键的话可以指定一个字段来划分也可以只使用一个map

--table   指定要导入到RDBMS上的哪个表

--input-null-string <null-string>    当是字符串格式的字段里面出现了null时需要用来替换的值,有的时候我们不希望处理后的数据里面还有null这样的空值

--input-null-non-string <null-string>    非字符串格式的字段里面null值的代替值

--fields-terminated-by <char>    对HDFS上面文件所采用的分隔符,默认是' , ',但有的时候文件可能是' \t ' 这样的分隔符

一般使用到的就是这些了,下面是一个简单的例子:

大数据开发之Sqoop篇----sqoop export

这个就是我们要从hive上面导出的表了,我们在HDFS上面看下

大数据开发之Sqoop篇----sqoop export

现在我们先在MySQL上面创建一个相同格式的表:

大数据开发之Sqoop篇----sqoop export

简单地创建完毕以后,现在我们就开始从HDFS上面导出数据

sqoop export --connect jdbc:mysql://hadoop001/ruozedata --username root -password 123456 --export-dir /user/hive/warehouse/doudou_db.db/new_table/000000_0 -m 1 --table final_table --fields-terminated-by '\t'

大数据开发之Sqoop篇----sqoop export

我们再来看下MySQL上面的表数据

大数据开发之Sqoop篇----sqoop export

数据都过来了,说明我们成功了。