Sqoop操作

sqoop ##sqoop命令

import ##表示导入

--connect jdbc:mysql://ip:3306/sqoop ##告诉jdbc,连接mysql的url

--username root ##连接mysql的用户名

--password admin ##连接mysql的密码

--table aa ##从mysql导出的表名称

--target-dir /xxx/yyy ##指定导入位置

--fields-terminated-by '\t' ##指定输出文件中的行的字段分隔符

-m 1 ##复制过程使用1个map作业
##后面为注释,所有命令不得换行!
--target-dir若不指定会将表导入到hdfs默认路径/user/root路径下
1、显示mysql数据库中的database
      sqoop list-databases --connect jdbc:mysql://hadoop0:3306/ --username root --password admin
     
2、 sqoop import --connect jdbc:mysql://hadoop0:3306/test --username root --password admin --table NewTable --hive-import -m 1
    会将表导入到hive-site.xml中设定的warehourse目录下
     mysql中数据库test下,有个表名为‘NewTable'的表。
     
sqoop操作过程如下:     

数据已经上传至hive中:
     
     默认复制一份:
     其中的内容:
          

4、也可以使用hive进行查看。如下所示
     hive使用mysql引擎,可以执行sql语句,show databases;显示数据库。有个默认数据库defaul,并且默认表存入该数据库中。
     show tables;显示表。
     查看表中数据:
     
3、把数据从hdfs导出到mysql中
      sqoop

     export ##表示数据从hive复制到mysql中

     --connect jdbc:mysql://192.168.1.113:3306/test

     --username root

     --password admin

     --table bb ##mysql中的表,即将被导入的表名称

     --export-dir '/user/root/aa/part-m-00000' ##hive中被导出的文件

     --fields-terminated-by '\t' ##hive中被导出的文件字段的分隔符


4、错误1:
     
     除hadoop0外其他虚拟机连接mysql失败。因为在之前10、hive安装的配置过程中,赋予权限错误。
     进入mysql, mysql -u root -p-->输入密码
     grant all privileges on *.* to 'root'@'hadoop0' identified by 'root';
     将'root'@'hadoop0'改为'root'@'%',表示任何机器均可使用root账号进行连接。
5、4修改后出现新错误2:
          
进入HIVE_HOME/conf文件夹,修改hive-site.xml文件。
     
将之前的localhost修改为hadoop0。程序正常运行。
6、结果:
     
     结果会存入hive的warehouse文件夹下。5进行修改前,数据也能读出,但是存在于root/user/newtable下。表示临时文件,数据从mysql读出成功,但是写入hive时出现错误。

7,若两次执行相同的import命令,会报错如下:
默认将数据上传到hdfs的/user/root/文件夹下
可以使用--warehouse-dir命令指定位置,示例如下
sqoop import --connect jdbc:mysql://localhost:3306/spark --username root --password root --table sparkjdbc --fields-terminated-by '\t' --warehouse-dir /tttt -m 1

你可能感兴趣的:(Sqoop操作)