大数据实践(九)--sqoop安装及基本操作

前置工具及环境

Hadoop 2.7.3

sqoop 1.4.6

mysql 8

mysql-connector-java-8.0.20.jar

java-json.jar

一、简介

Sqoop 是一个常用的数据迁移工具,主要用于在不同存储系统之间实现数据的导入与导出:

  • 导入数据:从 MySQL,Oracle 等关系型数据库中导入数据到 HDFS、Hive、HBase 等分布式文件存储系统中;
  • 导出数据:从 分布式文件系统中导出数据到关系数据库中。

其原理是将执行命令转化成 MapReduce 作业来实现数据的迁移。

二、安装

1、解压、配置环境变量

tar -zxvf  sqoop-1.4.6.tar.gz

其他步骤略去。

2、修改环境文件

进入安装目录的conf下,拷贝模板

cp sqoop-env-template.sh sqoop-env.sh

在文件中修改hadoop的变量。

sqoop使用mapReduce处理数据,所以以下两个变量必须修改。

export HADOOP_COMMON_HOME=/usr/local/hadoop

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/usr/local/hadoop

3、加入jar包

在lib目录下加入Mysql和处理json的jar包。

mysql-connector-java-8.0.20.jar 

#  处理json
java-json.jar 

查看版本

$ sqoop version
Warning: /usr/local/sqoop/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/local/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
20/11/12 14:34:17 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
Sqoop 1.4.6
git commit id 
Compiled by jenkins on Tue Aug 23 00:56:12 PDT 2016

三、数据转换

1、查看mysql

没有mysql驱动会报错

#链接数据库,查看库
sqoop list-databases 
--connect jdbc:mysql://ip:3306/ 
--username root 
--password root


#连接数据库,查看表
sqoop list-tables 
--connect jdbc:mysql://ip:3306/mysql  
--username root 
--password root 

2、mysql-hdfs

将mysql数据导入hdfs

sqoop import 
--connect jdbc:mysql://ip:3306/mysql      
--username root 
--password root 
--table help_keyword            # 待导入的表
--delete-target-dir             # 目标目录存在则先删除
--target-dir /sqoop             # 导入的目标目录
--fields-terminated-by '	'     # 指定导出数据的分隔符
-m 3    

将hdfs数据导入mysql中

#mysql中需要预先建表
CREATE TABLE help_keyword_from_hdfs LIKE help_keyword ;

sqoop export  
    --connect jdbc:mysql://ip:3306/mysql 
    --username root 
    --password root 
    --table help_keyword_from_hdfs         # 导出数据存储在 MySQL 的 help_keyword_from_hdf 的表中
    --export-dir /sqoop  
    --input-fields-terminated-by '	'
    --m 3 

3、sqoop转换hbase、hive、mysql等

导入导出过程中可能会出现以下冲突:

主键错误
乱码
原文地址:https://www.cnblogs.com/cgl-dong/p/14034914.html