乐趣区

大数据系列Sqoop学习笔记

1. Sqoop 简介

  •  Apache Sqoop 是一种专门为 hadoop 和比如关系型数据库等结构化数据库之间的高效数据转换一种工具。
  • 数据的搬运工
  • Sqoop 在大多数自动化数据转换的过程中,依托于数据库相关的 Schema 描述信息,转换的过程是使用 MapReduce 来进行的
  • Sqoop 目前有两个版本,完全不兼容,Sqoop 和 Sqoop2. 可以通过版本号来进行简单的区分,1.4.x 为 sqoop 或 sqoop1,1.99.x 为 sqoop2

2. Sqoop 数据的导入(import)

  • 传统的 RDBMS 中的数据导入到 hbase…
  • 从传统数据库获取元数据信息(schema、table、field、field type),把导入功能转换为只有 Map 的

    Mapreduce 作业,在 mapreduce 中有很多 map,每个 map 读一片数据,进而并行的完成数据的拷贝。

3. Sqoop 数据的导出(export)

  • hbase 中的数据导出到 rdbms 中
  • 获取导出表的 schema、meta 信息,和 Hadoop 中的字段 match;多个 map only 作业同时运行,完成 hdfs 中数据导出到关系型数据库中。

4. Sqoop 的安装

  • 准备安装文件

    • sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
  • 解压

    • tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/
  • 重命名

    • mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop
  • 配置环境变量

    export SQOOP_HOME=/opt/sqoop
    export PATH=$PATH:$SQOOP_HOME/bin
  • 修改配置文件

    mv sqoop-env-template.sh  sqoop-env.sh 

    ==vim sqoop-env.sh==

    export HADOOP_COMMON_HOME=/opt/hadoop
    export HBASE_HOME=/opt/hbase
    export HIVE_HOME=/opt/hive
    export ZOOCFGDIR=/opt/zookeeper/conf
  • 因为 SQOOP 要连接 rdbms,所以需要将该数据的驱动 jar 包添加进 sqoop 的 classpath 中,所以将 mysql 的 jar 包上传至 $SQOOP_HOME/lib

    • mysql 需要 mysql-connector-java-5.1.32.jar 以上版本支持。

5. Sqoop 的基本操作

  • 列出数据库

    sqoop-list-databases –connect jdbc:mysql://uplooking05:3306/ –username root –password root

  • 列出所有的表

    sqoop-list-tables –connect jdbc:mysql://uplooking05:3306/up1 –username root –password root

6. mysql 中的数据导入到 hdfs 中

sqoop-import –connect jdbc:mysql://uplooking05/up2 –username root –password root –table user

  • == 在执行导入的过程中,一定要确定 RDBMS 中的表中有 pk==
  • –target-dir: 导入到自定义的 hdfs 目录中
  • –append : 追加导入
  • -m : 指定 maptask 的数量
  • –username : 数据库的用户名
  • –password : 数据库的密码
  • –connect : 数据库的 url
  • –delete-target-dir : 一般与 –target-dir 联用, 与 –append 是 == 互斥 == 的
  • –last-value : 跳过几行数据,追加其余所有的数据
  • –where: 根据条件进行导入

    • sqoop-import –connect jdbc:mysql://uplooking05/up2 –username root –pass
      word root –table user –target-dir /sqoop/user –delete-target-dir –where ‘id>2’**
  • –query: 导入 mysql 查询的结果到 hdfs

    • sqoop-import –connect jdbc:mysql://uplooking05/up2 –username root –pass
      word root –target-dir /sqoop/user –delete-target-dir –query “select name,age from user where age>10 and $CONDITIONS” –split-by ‘age’

7. mysql 中的数据导入 hbase 中

sqoop-import –connect jdbc:mysql://uplooking05/up2 –username root –password root –table user –hbase-row-key id –hbase-table ns1:t2 –column-family f1

–hbase-row-key: 可以不指定, 不指定默认 hbase 中的 row-lkey 就是 mysql 中的主键

==注意: 导入数据到 hbase 数据库之前需要在 hbase 中先创建表和列族==

8. hdfs 中的数据导出到 mysql

sqoop-export –connect jdbc:mysql://uplooking05:3306/up2 –username root –password root –table user –export-dir /sqoop/user2

==注意: 导出之前首先需要在 mysql 中创建表==

9. hbase 中的数据导出到 mysql

不可行

退出移动版