Sqoop迁移Hadoop与RDBMS间的数据

      Sqoop是用来实现结构型数据(如:关系型数据库RDBMS)和Hadoop之间进行数据迁移的工具。它充分利用了MapReduce的并行特点以批处理的方式加快数据的传输,
同时也借助MapReduce实现容错。

一、将MySQL中的表迁移到HDFS上(RDBMS —> HDFS)

  1. 导入MySQL"db_sqoop.mysql_emp表"所有数据到HDFS中;
    sqoop import \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --table mysql_emp \
    --target-dir /data/hdfs_sqoop \
    --delete-target-dir \
    --num-mappers 1    \
    --fields-terminated-by '\t'
    --table mysql中目标表;
    --target-dir hdfs存放目录;
    --delete-target-dir:若hdfs存放目录已存在,则自动删除;
    --num-mappers:指定maptask数量;
    --fields-terminated-by:各字段间的分隔符;

  2. 将MySQL的查询结果导入HDFS上;
    sqoop import \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --target-dir /data/hdfs_sqoop \
    --delete-target-dir \
    --num-mappers 1    \
    --fields-terminated-by '\t' \
    --query 'SELECT emp_no,first_name,last_name FROM mysql_emp WHERE gender="M" and $CONDITIONS;'
    ”$CONDITIONS"表示将查询结果带回。

  3. 使用sqoop的关键字筛选查询后的结果导入到HDFS;
    sqoop import \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --table mysql_emp \
    --target-dir /data/hdfs_sqoop \
    --delete-target-dir \
    --num-mappers 1    \
    --fields-terminated-by '\t' \
    --where "gender='F'"
  4. 从MySQL导入指定’列’到HDFS上;
  5. sqoop import \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --table mysql_emp \
    --target-dir /data/hdfs_sqoop \
    --delete-target-dir \
    --num-mappers 1    \
    --fields-terminated-by '\t' \
    --columns emp_no,gender,birth_date

二、MySQL  ——>   Hive (RDBMS ——> HIVE)

  1. 将MySQL中的表导入Hive中;
    sqoop import \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --num-mappers 1    \
    --table mysql_emp \
    --hive-import \
    --hive-table db_hive_sqoop.hive_emp \
    --fields-terminated-by '\t' \
    --hive-overwrite \
    --delete-target-dir

三、MySQL –> Hbase(RDBMS ——> Hbase)

  1. 将MySQL中的表导入Hbase中;
  2. sqoop import \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --table book \
    --columns "id,name,price" \
    --column-family "info" \
    --hbase-create-table \
    --hbase-row-key "id" \
    --hbase-table "hbase_book" \
    --num-mappers 1  \
    --split-by id

四、HDFS/Hive —> MySQL (HDFS/Hive —> RDBMS)

  1. 在MySQL中创建对应的表,然后使用如下语句;
  2. sqoop export \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --table myqsl_dept \
    --num-mappers 1 \
    --export-dir /usr/hive/warehouse/db_hive_sqoop.db/hive_dept \
    --input-fields-terminated-by '\t'

五、导出MySQL表结构到hive

  1. 导出MySQL表结构;
    sqoop create-hive-table \
    --connect jdbc:mysql://hadoopone:3306/db_sqoop \
    --username root \
    --password root \
    --table mysql_stu \
    --hive-database db_hive_sqoop \
    --hive-table hive_stu
  • posted @ 2019-03-31 20:04  Lvan灬  阅读(357)  评论(0编辑  收藏  举报