Sqoop的基本操作,以及导入Oracle和MySQL中的数据到Hive、HDFS、HBase

import :Import a table from a database to HDFS
         sqoop import 的本质是:就是MR程序
 导入数据到HDFS
        (1)把Oracle中的EMP表 导入到HDFS中
[root@bigdata11 conf]# sqoop import --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SCOTT --password tiger --table EMP --target-dir /sqoop/import/emp1
            在HDFS中查看输出的结果


            
        (2)导入EMP表,指定导入的列
[root@bigdata11 conf]# sqoop import --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SCOTT --password tiger --table EMP --columns ENAME,SAL --target-dir /sqoop/import/emp2
            


        (3)导入Oracle中的订单表到HDFS中:sh用户 sales表(订单表:大约92万条数据)


[root@bigdata11 conf]# sqoop import --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SH --password sh --table SALES --target-dir /sqoop/import/sales 
            错误日志:
            ERROR tool.ImportTool: Error during import: No primary key could be found for table SALES. Please specify one with --split-by or perform a sequential import with '-m 1'
        没有设置主键,需要在后面加入-m 1   ,表示设置一个分区

[root@bigdata11 conf]# sqoop import --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SH --password sh --table SALES --target-dir /sqoop/import/sales1 -m 1

根据上图显示,只有一个分区

把MySQL中的card表导入到HDFS中,card表大概70万条数据

[root@bigdata11 ~]# sqoop import --connect jdbc:mysql://192.168.100.11:3306/Test_DB --username root --password 123123 --table card --target-dir /sqoop/import/card
在HDFS中查看

把Oracle中的EMP表导入到Hive中

首先,因为Hive中默认的数据库是default,为了测试需要在Hive中创建一个数据库test

hive> create database test;
Moved: 'hdfs://bigdata11:9000/user/hive/warehouse/test.db' to trash at: hdfs://bigdata11:9000/user/root/.Trash/Current
Moved: 'hdfs://bigdata11:9000/user/hive/warehouse/test.db' to trash at: hdfs://bigdata11:9000/user/root/.Trash/Current
OK
Time taken: 4.91 seconds
hive> show databases;
OK
default
test
[root@bigdata11 conf]# sqoop import --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SCOTT --password tiger --table EMP  -m 1 --hive-import --hive-database test
在Hive中查看结果

把Oracle中的EMP表导入到HBase(需要事先将表创建)
[root@bigdata11 conf]#sqoop import --connect jdbc:oracle:thin:@192.168.100.100:1521:orcl --username SCOTT --password tiger --table EMP --columns empno,ename,sal,deptno --hbase-table emp --hbase-row-key empno --column-family empinfo 

在HBase中查看emp表

codegen:将关系数据库表映射为一个Java文件、Java class类、以及相关的jar包

实例:在Linux上新建目录  mkdir /root/sqoop

[root@bigdata11 conf]# sqoop codegen --connet jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SCOTT --password --table EMP --outdir /root/sqoop

create-hive-table: 生成与关系数据库表的表结构对应的HIVE表

实例:把Oracle中的EMP表创建在Hive中

[root@bigdata11 conf]# sqoop create-hive-table --connect jdbc:oracle:thin:@192.168.137.129:1521:orcl --username SCOTT --password tiger --table EMP --hive-table emphive
查看Hive中的emphive的表结构

eval:以快速地使用SQL语句对关系数据库进行操作,这可以使得在使用import这种工具进行数据导入的时候,可以预先了解相关的SQL语句是否正确,并能将结果显示在控制台。

示例:

[root@bigdata11 conf]# sqoop eval --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SCOTT --password tiger --query 'select * from emp where deptno=10'

list-databases :List available databases on a server

对MySQL来说是列出所有MySQL的库名

[root@bigdata11 ~]# sqoop list-databases --connect jdbc:mysql://192.168.100.11:3306/ --username root --password 123123

对Oracle来说是列出当前数据库中所有的用户名

[root@bigdata11 ~]# sqoop list-databases --connect jdbc:oracle:thin:@192.168.100.100:1521/orcl --username SYSTEM --password password

export:从hdfs中导数据到关系数据库中

示例:将HDFS的emp表导入到MySQL 中

首先需要在MySQL中创建和HDFS中的emp一样的表结构

root@db 23:21:  [sqoop]> create table emp(empno int,ename varchar(20),job varchar(20),mgr int,hiredate varchar(30),sal int,comm mm int,deptno int);
 

查看MySQL的表结构

执行导出操作:

[root@bigdata11 input]# sqoop export --connect jdbc:mysql://192.168.100.11:3306/sqoop --username root --password 123123 --table emp --export-dir /scott
 

在MySQL中查看emp表

猜你喜欢

转载自blog.csdn.net/liuzhuang2017/article/details/82119323