Sqoop把关系型数据库(这里以mysql为例)的数据导入到HDFS中,主要分为两步
*得到元数据(mysql数据库中的数据)
*提交map
这样流程就很清晰了,首先连接到mysql数据库得到表中的数据,然后进行map任务即可
具体实现为:
bin/sqoop import \
--connect jdbc:mysql://192.168.83.112:3306/test \ *这里将数据库ip和你要导入的数据所在的数据库换成你自己的
--username root \
--password root \
--table student
根据map任务执行来看,这里如果不指定输出到hdfs的目录的话,会自动在hdfs用户主目录下生成一个与表的名称一致的目录来存放数据,这里默认是会有四个map任务,数据量小,所以这里比较耗时
一般我们需要自己指定存放在hdfs的位置目录和map的个数
bin/sqoop import \
--connect jdbc:mysql://192.168.83.112:3306/test \
--username root \
--password root \
--table student \
--target-dir /user/root/sqoop/import/student \ *指定导入到hdfs中的位置
--num-mappers 1 *指定map任务的个数
Sqoop导入数据到HDFS具体执行流程:
*将命令自动生成相应的java类
*将java代码编译成jar包
*执行jar包
*执行mapreduce(对import来说,只运行map任务)