我是靠谱客的博主 美好冷风,最近开发中收集的这篇文章主要介绍Sqoop部署与使用Sqoop部署Sqoop操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

Sqoop部署

下载并解压

配置文件 

添加驱动

验证安装

sqoop使用

连接MySQL

导入数据

RDBMS导入HDFS 

RDBMS到Hive

RDBMS到Hbase


Sqoop部署

下载并解压

  1. 下载
  2. 上传安装包sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz到虚拟机中
  3. 解压安装包:
    # 解压
    tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /usr/local/src/
    
    # 重命名
    cd /usr/local/src/
    mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop

配置文件 

  1. 复制 sqoop-env-template.sh 文件并重命名
    # 进入 sqoop 的 conf 目录下
    [root@master src]# cd sqoop/conf
    
    # 查看目录下的文件
    [root@master conf]# ls
    oraoop-site-template.xml  sqoop-env-template.sh    sqoop-site.xml
    sqoop-env-template.cmd    sqoop-site-template.xml
    
    # 拷贝一个文件并命名为 sqoop-env.sh
    [root@master conf]# cp sqoop-env-template.sh sqoop-env.sh
  2. 配置sqoop-env.sh
    # 根据软件的安装路径配置文件(如果没有安装对应组件会出现警告,不影响使用)
    export HADOOP_COMMON_HOME=/usr/local/src/hadoop
    export HADOOP_MAPRED_HOME=/usr/local/src/hadoop
    export HIVE_HOME=/usr/local/src/hive
    export HBASE_HOME=/usr/local/src/hbase
    export ZOOKEEPER_HOME=/usr/local/src/zookeeper
    export ZOOCFGDIR=/usr/local/src/zookeeper

添加驱动

如果连接类似MySQL等关系型数据库,需要添加JDBC驱动

 点击下载:JDBC驱动

cp mysql-connector-java-5.1.27-bin.jar /usr/local/src/sqoop/lib/

验证安装

# 切换到 sqoop 目录下
cd /usr/local/src/sqoop
# 执行验证命令
bin/sqoop help
Available commands:
  codegen            Generate code to interact with database records
  create-hive-table  Import a table definition into Hive
  eval               Evaluate a SQL statement and display the results
  export             Export an HDFS directory to a database table
  help               List available commands
  import             Import a table from a database to HDFS
  import-all-tables  Import tables from a database to HDFS
  import-mainframe   Import datasets from a mainframe server to HDFS
  job                Work with saved jobs
  list-databases     List available databases on a server
  list-tables        List available tables in a database
  merge              Merge results of incremental imports
  metastore          Run a standalone Sqoop metastore
  version            Display version information

Sqoop操作

连接MySQL

bin/sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username 用户 --password 密码
information_schema
hive
metastore
mysql
performance_schema
sys

导入数据

导入:从非大数据集群(RDBMS)向大数据集群(HDFS、HIVE、HBASE )传输数据

RDBMS导入HDFS 

启动HDFS

  1.   进入MySQL

    mysql -uroot -proot
  2. 创建测试数据

    # 创建数据库
    create database tescdata;
    
    # 进入 tescdata 数据库
    use tescdata;
    
    # 创建表
    CREATE TABLE PIM(
    id INT(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,
    NAME VARCHAR(255),
    sex VARCHAR(255));
    
    # 插入数据
    INSERT INTO PIM(NAME, sex) VALUES('zhangshan', '1');
    INSERT INTO PIM(NAME, sex) VALUES('lilei', '1');
    INSERT INTO PIM(NAME, sex) VALUES('xiaohong', '0');
    
    # 查看数据
    mysql> select * from PIM;
    +----+-----------+------+
    | id | NAME      | sex  |
    +----+-----------+------+
    |  1 | zhangshan | 1    |
    |  2 | lilei     | 1    |
    |  3 | xiaohong  | 0    |
    +----+-----------+------+
    
  3. 导入数据 

    1.  全部导入 

      bin/sqoop import 
      --connect jdbc:mysql://localhost:3306/tescdata 
      --username root 
      --password root 
      --table PIM 
      --target-dir /user/tescdata 
      --delete-target-dir 
      --num-mappers 1 
      --fields-terminated-by "t"
      

      [root@master sqoop]# hdfs dfs -cat /user/tescdata/part-m-00000
      1       zhangshan       1
      2       lilei   1
      3       xiaohong        0
      bin/sqoop import  # 导入数据
      --connect jdbc:mysql://localhost:3306/tescdata  # 连接mysql
      --username root  # 用户名
      --password root  # 密码
      --table PIM  # 表名
      --target-dir /user/tescdata  # hdfs目录
      --delete-target-dir  # 如果有就删除(不建议使用)
      --num-mappers 1  # 指定map数
      --fields-terminated-by "t" # 指定文件分割符
    2. 查询导入   

      bin/sqoop import 
      --connect jdbc:mysql://localhost:3306/tescdata 
      --username root 
      --password root 
      --target-dir /user/tescdata 
      --delete-target-dir 
      --num-mappers 1 
      --fields-terminated-by "t" 
      --query 'select * from PIM where sex = 1 and $CONDITIONS'
      [root@master sqoop]# hdfs dfs -cat /user/tescdata/*
      1       zhangshan       1
      5       lilei   1

      --query 查询(执行sql语句进行查询,and $CONDITIONS 不可省略

    3. 导入指定列

      bin/sqoop import 
      --connect jdbc:mysql://localhost:3306/tescdata 
      --username root 
      --password root 
      --columns id,name 
      --table PIM 
      --target-dir /user/tescdata 
      --delete-target-dir 
      --num-mappers 1 
      --fields-terminated-by "t" 
      

      --columns 指定列名(使用查询导入执行 select id,name from PIM where $CONDITIONS; 效果一致)

    4. 导入筛选
      bin/sqoop import 
      --connect jdbc:mysql://localhost:3306/tescdata 
      --username root 
      --password root 
      --target-dir /user/tescdata 
      --delete-target-dir 
      --num-mappers 1 
      --fields-terminated-by "t" 
      --table PIM 
      --where "id>2 and sex = 1"

      --where 指定条件 (使用查询导入执行 select * from PIM where id>2 and sex = 1 and $CONDITIONS; 效果一致)

RDBMS到Hive

bin/sqoop import 
--connect jdbc:mysql://localhost:3306/tescdata 
--username root 
--password root 
--table PIM 
--num-mappers 1 
--hive-import 
--fields-terminated-by "t" 
--hive-overwrite 
--hive-table hive_PIM
hive> show tables;
OK
hive_pim
Time taken: 0.09 seconds, Fetched: 1 row(s)
hive> select * from hive_pim;
OK
1       zhangshan       1
3       xiaohong        0
5       lilei   1

过程分为两步,第一步将数据导入到HDFS(默认的临时目录是/user/username/表名),第二步将导入到HDFS的数据迁移到Hive仓库

 

 

 RDBMS到Hbase

bin/sqoop import 
--connect jdbc:mysql://localhost:3306/tescdata 
--username root 
--password root 
--table PIM 
--columns "id,name,sex" 
--column-family "info" 
--hbase-create-table 
--hbase-row-key "id" 
--hbase-table "hbase_PIM" 
--num-mappers 1 
--split-by id

 导出

导出:从大数据集群(HDFS、HIVE、HBASE )向非大数据集群(RDBMS)传输数据

HIVE/HDFS到RDBMS

bin/sqoop export 
--connect jdbc:mysql://localhost:3306/tescdata 
--username root 
--password root 
--table PIM 
--num-mappers 1 
--export-dir /user/hive/warehouse/hive_pim 
--input-fields-terminated-by "t"

MySQL表必须存在,否则不会自动创建

最后

以上就是美好冷风为你收集整理的Sqoop部署与使用Sqoop部署Sqoop操作的全部内容,希望文章能够帮你解决Sqoop部署与使用Sqoop部署Sqoop操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部