sqoop

sqoop概述

  • 官网:aqoop.apache.org
  • 场景:解决传统型数据库缺点,分布式存储。把传统型数据库数据迁移

sqoop的export命令(导出)

  • 需求:Hive/HDFS的数据导出到mysql
  1. 根据Hive中的表字段创建mysql表

    1
    2
    清空表数据:
    mysql> truncate table user1;
  2. 编写sqoop启动命令

    1
    2
    3
    4
    5
    6
    7
    8
    [root@bigdata211 sqoop]# bin/sqoop export \
    > --connect jdbc:mysql://bigdata211:3306/sq \
    > --username root \
    > --password tiger \
    > --table user1 \
    > --num-mappers 1 \
    > --expoet-dir /user/hive/warehouse/user_sqoop \
    > --input-fields-terminated-by "\t"
  3. mysql中查看数据是否导入

  • 需求:通过脚本文件执行程序
  1. 创建文件夹/root/sqoopjob
  2. 创建sqoopjob脚本(一行命令一行值)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    hdfs2mysql.opt:
    export
    --connect
    jdbc:mysql://bigdate211:3306/sq
    --username
    root
    --password
    tiger
    --table
    user1
    --num-mappers
    1
    --exoprt-dir
    /user/hive/warehouse/user_sqoop
    --input-fields-terminated-by
    "\t"
  3. 执行脚本文件

    1
    2
    3
    启动脚本:
    [root@bigdata211 sqoop]# bin hd/sqoop \
    > --options-file /root/sqoopjob/hdfs2mysql.opt

sqoop常用命令

  1. import ————– 将数据导入到集群
  2. export ————– 将集群数据导出
  3. codegen ————- 把某张表数据生成java bean对象并且打包为jar
  4. eval —————- 查看sql的执行结果
  5. create-hive-table — 创建一个Hive表
  6. import-all-tables — 导入某个数据库中的所有表到集群中
  7. list-tables ——— 列出某个数据库下的所有表
  8. merge ————— 将HDFS中不同目录下的数据合并在一起
  9. help —————- 查看帮助信息

sqoop常用参数

  1. –connect ————– 连接关系型数据库URL
  2. –connection-manager — 指定连接管理类
  3. –diver —————- JDBC的driver class(驱动类)
  4. –username ————- 链接数据库的用户名
  5. –password ————- 链接数据库的密码
  6. –verbose ————– 在控制台打印详细信息
  7. –help —————– 查看帮助
  8. –hive-import ———- 将关系型数据库导入到Hive表中
  9. –hive-overwrite ——- 将关系型数据库覆盖到Hive表中
  10. –create-hive-table —- 创建Hive表
  11. –hive-table ———– 接入Hive表
  12. –table —————- 指定关系型数据库的表名