Sqoop基础操作练习(一)

Sqoop基础操作练习(一)



一. 通过sqoop将mysql数据导入hdfs

  • 任务目标:
    新建一张表
    插入些许数据阿
    将这些数据导入到hdfs

  • 任务完成步骤

  1. 创建mysql表作为数据源
    Sqoop基础操作练习(一)_第1张图片

  2. 插入几条数据用于测试
    Sqoop基础操作练习(一)_第2张图片

  3. Sqoop抽取mysql到hdfs
    sqoop import
    –connect jdbc:mysql://10.200.65.112:3306/test
    –username test
    –password 123456@Local
    –as-textfile
    –table xhy_country
    –target-dir /tmp/xhy/sqoop/test1/
    –delete-target-dir
    -m 1

  4. 执行成功,后通过hdfs查看文件,并输出文件内容
    hdfs dfs -ls /tmp/xhy/sqoop/test1/
    hdfs dfs -cat /tmp/xhy/sqoop/test1/part-m-00000
    Sqoop基础操作练习(一)_第3张图片

二. Free-form Query Imports

  • 任务目标:
    新建一张表
    插入些许数据,数据中包含换行符,null值
    将这些表中的部分数据导入hdfs,null值替换为横杠 ‘-’,换行符删除掉

  • 任务完成步骤

  1. 新建表,新增部分带特殊换行符数据。
    Sqoop基础操作练习(一)_第4张图片
  2. 执行sqoop命令,测试null改为”-”,空字符串则不变化。
    sqoop import
    –connect jdbc:mysql://10.200.65.112:3306/test
    –username test
    –password 123456@Local
    –as-textfile
    –query ‘select country_id,country,last_update from xhy_country_2 where $CONDITIONS’
    –target-dir /tmp/xhy/sqoop/test2/
    –delete-target-dir
    –null-string ‘-’
    –fields-terminated-by ‘|’
    –lines-terminated-by ‘\n’
    -m 1

三. hive import

  • 任务目标:
    将MySQL中的数据导入到hive表
  • 任务完成步骤
  1. 创建hive表,用于import导入数据
    在这里插入图片描述
  2. 执行hive import 语句,指定id>=3的内容,分隔符与hive建表一致,使用”|”。
    sqoop import
    –connect jdbc:mysql://10.200.65.112:3306/test
    –username test
    –password 123456@Local
    –hive-import
    –hive-database tmp
    –hive-table xhy_country
    –table xhy_country
    –where ‘country_id>=3’
    –split-by country_id
    –fields-terminated-by ‘|’
    -m 3
  3. 在hive中查看表中是否有数据
    Sqoop基础操作练习(一)_第5张图片

四. hdfs数据export到MySQL

  • 任务目标:
    生成数据文件,字段间用冒号分割 “:”
    上传到hdfs
    MySQL建表,表包含一个主键
    将数据到入到MySQL表
  • 任务完成步骤
  1. 创建mysql表,插入几条测试数据。
CREATE TABLE `xhy_country_3` (
  `country_id` int(11),
  `country` varchar(50),
  PRIMARY KEY (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO xhy_country_3 (country) VALUES ("Afghanistan"),("Algeria");
  1. Sqoop导出刚才创建的mysql表数据,用” :”分割字段
    sqoop import
    –connect jdbc:mysql://10.200.65.112:3306/test
    –username test
    –password 123456@Local
    –as-textfile
    –table xhy_country_3
    –target-dir /tmp/xhy/sqoop/test3/
    –delete-target-dir
    –null-string ‘-’
    –fields-terminated-by ‘:’
    –lines-terminated-by ‘\n’
    -m 1

  2. 为了测试hdfs数据导入mysql,先将刚才用于导出的表数据truncate。

  3. 通过sqoop导出hdfs文件用“:”分割至Mysql表中
    sqoop export
    –connect jdbc:mysql://10.200.65.112:3306/test
    –username test
    –password 123456@Local
    –export-dir /tmp/xhy/sqoop/test3/
    –table xhy_country_3
    –input-fields-terminated-by ‘:’
    –input-lines-terminated-by ‘\n’
    -m 1

  4. Mysql查看数据
    Sqoop基础操作练习(一)_第6张图片

五. 在4基础上,新生成一些数据:

  • 任务目标:
    主键一部分重合,一部分不一样,主键重合记录其他字段有更新,
    将这部分数据merge进4步生成的表中(主键重合更新,不重合插入)

  • 任务完成步骤

  1. 手动put一份hdfs文件,满足测试要求数据。
    在这里插入图片描述

  2. 执行export到mysql,主键重合更新,不重合插入。
    sqoop export
    –connect jdbc:mysql://10.200.65.112:3306/test
    –username test
    –password 123456@Local
    –export-dir /tmp/xhy/sqoop/test3/
    –table xhy_country_3
    –update-key country_id
    –update-mode allowinsert
    –input-fields-terminated-by ‘:’
    –input-lines-terminated-by ‘\n’
    -m 1

  3. 在mysql中查看结果正确。
    Sqoop基础操作练习(一)_第7张图片

你可能感兴趣的:(Sqoop,Sqoop)