Sqoop

Sqoop:

SQOOP是用于对数据进行导入导出的。

(1)MySQLOracle等数据库中的数据导入到HDFSHiveHBase

(2)HDFSHiveHBase中的数据导出到MySQLOracle等数据库中

安装sqoop

1.解压sqoop

tar  -zxvf  sqoop-1.4.3.bin__hadoop-1.0.0.tar.gz

2.重命名

mv  sqoop-1.4.3.bin__hadoop-1.0.0   sqoop

 

3.设置环境变量

vi  /etc/profile

 

export SQOOP_HOME=/usr/local/sqoop

$SQOOP_HOME/bin 添加到 PATH

source  /etc/profile

 

完毕!

mysql数据导入到hdfs或者hive

我们主要使用的是sqoop脚本。

注:因为要连接mysql 所以需要jdbc驱动

 

把数据从mysql导入到hdfs(默认是/user/username)

sqoop import --connect jdbc:mysql://hadoop:3306/hive  --username root --password admin --table TBLS --fields-terminated-by '\t'

 

--null-string  ‘**’  表示对于null值使用**代替  默认使用NULL    ‘--’不能使用,专有字符

 

Sqoop在导入时,使用4MapReduce并行执行 ,可以指定一个如下:

sqoop import --connect jdbc:mysql://hadoop:3306/hive  --username root --password admin --table TBLS --fields-terminated-by '\t'  -m 1

 

hdfs不可以多次写入,解决办法:

sqoop import --connect jdbc:mysql://hadoop:3306/hive  --username root --password admin --table TBLS --fields-terminated-by '\t'  -m 1  --append

 

也可以导入到hive中,但前提是删除 /user/root/目录下内容:

hadoop fs -rmr  /user/root/*

在执行导入后,会再次在/user/root下生成 sqoop文件

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' -m 1 --append --hive-import

导入增量:

sqoop import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' -m 1 --append --hive-import --check-column  'TBL_ID'  --incremental append  --last-value 6

 

避免每次麻烦,创建job

sqoop job --create myjob -- import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' -m 1 --append --hive-import --check-column  'TBL_ID'  --incremental append  --last-value 6

 

列出创建的job

sqoop job --list

 

执行创建的job:

sqoop job --exec myjob (会提示让你输出mysql密码)

 

为了保存mysql密码,让其自动运行,要修改sqoop的配置文件sqoop-site.xml,让下面的内容生效:

<property>

<name>sqoop.metastore.client.record.password</name>

    <value>true</value>

    <description>If true, allow saved passwords in the metastore.

    </description>

  </property>

修改后下次执行之前要先删除以前未修改配置文件的的myjob:

sqoop job --delete myjob

把数据从hdfs导出到mysql

导数据得事先在mysql中存在表

导出数据必须按目录导出,不能按文件导出

导出数据

sqoop export --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table ids  --fields-terminated-by '\t'  --export-dir'/ids'

导出可以重复进行,多次插入数据进入mysql

 

注意:sqoop的导入导出事物是以Mapper任务为单位。



来自为知笔记(Wiz)


你可能感兴趣的:(Sqoop)