Sqoop的安装
该项目位置:http://sqoop.apache.org/
下载之后直接解压就好了,安装超级简单。
配置:
进入conf目录,cp sqoop-env-template.sh sqoop-env.sh
HADOOP_COMMON_HOME=**
HADOOP_MAPRED_HOME=**
这个配置我就不多说了,大家都懂。
然后进入bin输入sqoop-help
检查是否成功安装了
到数据之前还要将mysql的连接jar包拷贝到sqoop/lib不要忘了
Sqoop连接器
sqoop拥有一个可扩展的框架,使得他能够从(向)任何支持批量数据传输的外部存储系统导入(导出)数据。sqoop可以连接到大多数的关系型数据库,比如mysql、Oracle、sql server和DB2等。同时还有一个jdbc连接器,用于连接支持jdbc协议的数据库。
Sqoop数据的导入
这个导入说的是将关系型数据库导入的hdfs中
很简单,在Mysql中创建一张表
mysql> create table mysql_test(id int,name carchar(20));
插入一条数据
mysql> insert into mysql_test values (1,’wangwu’);
Query OK, 1 row affected (0.00 sec)
sqoop的import
[root@hadoop-yarn ~]# sqoop import –connect jdbc:mysql://localhost/test –table mysql_test -m 1
/Sqoop在import时,需要制定split-by参数。Sqoop根据不同的split-by参数值来进行切分,然后将切分出来的区域分配到不同map中。每个map中再处理数据库中获取的一行一行的值,写入到HDFS中。同时split-by根据不同的参数类型有不同的切分方法,如比较简单 的int型,Sqoop会取最大和最小split-by字段值,然后根据传入的num-mappers来确定划分几个区域。/
sqoop的export
sqoop可以在hdfs/hive和关系行数据之间进行数据的导入导出,其中主要使用了import和export这两个工具
[root@hadoop-yarn ~]# sqoop export –connect jdbc:mysql://localhost:3306/jtdata –table hive_month -export-dir /apps/hive/warehouse/hive_month/00000_0 –input-fields-terminated-by
/* 注意:如果你的hive里面是分区表的话,你要是想得到所有的数据的话,select* 出新的hive表再倒入mysql中,直接导入的话会出错,因为分区列都是连在一起的,比如你有三个分区啊a,b,c 那样select * 出来的结果是abc只有一个列,所以要用上fields-terminated-by”*/
这是两个导入导出的例子:
将关系型数据的表结构复制到hive中
sqoop create-hive-table –connect jdbc:mysql://192.168.174.91:3306/hs_test –table hs –username yy –password 123 –hive-table test
从关系数据库导入文件到hive中
sqoop import –connect jdbc:mysql://192.168.174.91:3306/hs_test –username yy –password 123 –table hs –hive-import -m 1