SQOOP是用于对数据进行导入导出的。(在它的解压缩文件里面也有一个doc文件夹,里面也有官方文档,进入index.html) (1)把MySQL、Oracle等数据库中的数据导入到HDFS、Hive、HBase中 (2)把HDFS、Hive、HBase中的数据导出到MySQL、Oracle等数据库中 安装SQOOP export SQOOP_HOME=/usr/local/SQOOP export ...$SQOOP_HOME/bin:..... sqoop.env.sh 需要改一下 项目最后一个视频50分钟有说到 使用SQOOP 输入命令sqoop 注意: 要把数据从HDFS中导入到mysql中,就意味着需要连接mysql,并对其进行操作,所以必不可少的需要驱动,所以需要把mysql的驱动 放到...../sqoop/lib目录下。这一点和HIVE一样 1.把数据从mysql导入到hdfs(默认是/user/<username>)中 表名 sqoop import --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' --null-string '**' -m 1 --append --hive-import sqoop import --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' --null-string '**' -m 1 --append --hive-import --check-column 'TBL_ID' --incremental append --last-value 6 --null-string '**' 表示,对于空的单元格用什么表示,这里是用**表示。 不能用--表示。会报错,因为--是特有字符 -m 1:表示启动几个map来执行,默认4个,这和最后产生几个文件也有关系,应该是启动一个map,产生一个文件。 --append 如果该命令重复执行,会报错==>说该文件已经在目录中存在了,但是加上--append之后,就可以重复执行了,并且每次执行会产生新的文件。 --hive-import:表示导入到hive中。 --check-column 'TBL_ID':表示增量导入的时候,需要验证的列,也就是说,当这一列有新增的时候,我们才导入。 --incremental append:表示,增量导入的时候,出现增量的时候这么处理, 这里的append表示出现增量,用增加的方式处理。 --last-value 6:表示上一次的最后一个值是到几。 导入的增量部分在一个新的文件中(不知道可不可以修改)。 2.把数据从hdfs导出到mysql中 (导出的时候,需要按照目录导出,不能按照文件导出 /dis代表的就是一个目录,不能写为/ids/id) 表名 sqoop export --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table ids --fields-terminated-by '\t' --export-dir '/ids' --export-dir '/ids':表示要被导出的目录 3.设置为作业,运行作业(每次都输入这个命令太麻烦,所以把这个命令做成一个job,job --create myjob,其中myjob是名字,可以自己起) sqoop job --create myjob -- import --connect jdbc:mysql://hadoop0:3306/hive --username root --password admin --table TBLS --fields-terminated-by '\t' --null-string '**' -m 1 --append --hive-import sqoop job --list 查看都有哪些job sqoop job --exec myjob 执行job 如何让job自动运行(就是想执行的时候不输密码。) 在配置文件目录下,有一个sqoop-site.xml 可以进行设置 需要把原来的脚本删掉才可以,否则不生效 sqoop job --delete myjob,然后再创建job 4. 导入导出的事务是以Mapper任务为单位。 如果我就想启动4个事务,这么保证我的事务呢,可以加个--staging-table,这个意思就是,我在导入的时候,4个事务都导入到一个临时表中,然后再把临时表导入到hdfs, --clear-staging-table,表示导入完成之后清空那个临时表。