zoukankan      html  css  js  c++  java
  • 【Sqoop1】Sqoop1实战之导出Sqoop export

    承接上篇,本篇主要演示Sqoop1的导出,涉及到的命令是Sqoop export。

    1 查看export帮助信息
    [hadoop@strong ~]$ sqoop help export
    2 默认导出

    1)在Mysql创建表
    mysql> create table lang as select *from language where 1=2;
    Query OK, 0 rows affected (1.56 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    2)查看HDFS文件内容
    [hadoop@strong ~]$ hdfs dfs -cat /user/sqoop1/language/part-r-00000
    1,2006-02-15 05:02:19.0,English
    2,2006-02-15 05:02:19.0,Italian
    3,2006-02-15 05:02:19.0,Japanese
    4,2006-02-15 05:02:19.0,Mandarin
    5,2006-02-15 05:02:19.0,French
    6,2006-02-15 05:02:19.0,German
    7,2018-06-26 16:51:34.0,Chinese
    8,2018-06-26 17:54:54.0,GD
    3)执行导出命令
    [hadoop@strong ~]$ sqoop export --connect jdbc:mysql://strong.hadoop.com:3306/sakila --username root --password root --table lang --export-dir /user/sqoop1/language
    注:由于表没有主键,重复执行后会出现重复记录,避免此情况,可设主键。
    4)查看导出结果
    mysql> select *from lang order by 1;
    +-------------+----------+---------------------+
    | language_id | name     | last_update         |
    +-------------+----------+---------------------+
    |           1 | English  | 2006-02-15 05:02:19 |
    |           2 | Italian  | 2006-02-15 05:02:19 |
    |           3 | Japanese | 2006-02-15 05:02:19 |
    |           4 | Mandarin | 2006-02-15 05:02:19 |
    |           5 | French   | 2006-02-15 05:02:19 |
    |           6 | German   | 2006-02-15 05:02:19 |
    |           7 | Chinese  | 2018-06-26 16:51:34 |
    |           8 | GD       | 2018-06-26 17:54:54 |
    +-------------+----------+---------------------+
    8 rows in set (0.00 sec)
    3 以update_key方式导出

    1)修改数据
    mysql> update lang set name='GuangDongHua',last_update=current_timestamp where language_id=8;
    Query OK, 1 row affected (0.45 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select *from lang order by 1;
    +-------------+--------------+---------------------+
    | language_id | name         | last_update         |
    +-------------+--------------+---------------------+
    |           1 | English      | 2006-02-15 05:02:19 |
    |           2 | Italian      | 2006-02-15 05:02:19 |
    |           3 | Japanese     | 2006-02-15 05:02:19 |
    |           4 | Mandarin     | 2006-02-15 05:02:19 |
    |           5 | French       | 2006-02-15 05:02:19 |
    |           6 | German       | 2006-02-15 05:02:19 |
    |           7 | Chinese      | 2018-06-26 16:51:34 |
    |           8 | GuangDongHua | 2018-06-27 12:05:22 |
    +-------------+--------------+---------------------+
    8 rows in set (0.01 sec)
    2)执行导出
    [hadoop@strong ~]$ sqoop export --connect jdbc:mysql://strong.hadoop.com:3306/sakila --username root --password root --table lang --export-dir /user/sqoop1/language --update-key language_id
    3)查看数据
    mysql> select *from lang order by 1;
    +-------------+----------+---------------------+
    | language_id | name     | last_update         |
    +-------------+----------+---------------------+
    |           1 | English  | 2006-02-15 05:02:19 |
    |           2 | Italian  | 2006-02-15 05:02:19 |
    |           3 | Japanese | 2006-02-15 05:02:19 |
    |           4 | Mandarin | 2006-02-15 05:02:19 |
    |           5 | French   | 2006-02-15 05:02:19 |
    |           6 | German   | 2006-02-15 05:02:19 |
    |           7 | Chinese  | 2018-06-26 16:51:34 |
    |           8 | GD       | 2018-06-26 17:54:54 |
    +-------------+----------+---------------------+
    8 rows in set (0.03 sec)
    注:以更新模式对数据进行了更新。

    4 指定update-mode为updateonly方式导出

    1)修改数据
    mysql> delete from lang where language_id=8;
    Query OK, 1 row affected (0.26 sec)
    mysql> update lang set name='CN',last_update=current_timestamp where language_id=7;
    Query OK, 1 row affected (0.12 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select *from lang order by 1;
    +-------------+----------+---------------------+
    | language_id | name     | last_update         |
    +-------------+----------+---------------------+
    |           1 | English  | 2006-02-15 05:02:19 |
    |           2 | Italian  | 2006-02-15 05:02:19 |
    |           3 | Japanese | 2006-02-15 05:02:19 |
    |           4 | Mandarin | 2006-02-15 05:02:19 |
    |           5 | French   | 2006-02-15 05:02:19 |
    |           6 | German   | 2006-02-15 05:02:19 |
    |           7 | CN       | 2018-06-27 12:16:57 |
    +-------------+----------+---------------------+
    7 rows in set (0.00 sec)
    2)进行导出
    [hadoop@strong ~]$ sqoop export --connect jdbc:mysql://strong.hadoop.com:3306/sakila --username root --password root --table lang --export-dir /user/sqoop1/language --update-key language_id --update-mode updateonly
    3)查看数据
    mysql> select *from lang order by 1;
    +-------------+----------+---------------------+
    | language_id | name     | last_update         |
    +-------------+----------+---------------------+
    |           1 | English  | 2006-02-15 05:02:19 |
    |           2 | Italian  | 2006-02-15 05:02:19 |
    |           3 | Japanese | 2006-02-15 05:02:19 |
    |           4 | Mandarin | 2006-02-15 05:02:19 |
    |           5 | French   | 2006-02-15 05:02:19 |
    |           6 | German   | 2006-02-15 05:02:19 |
    |           7 | Chinese  | 2018-06-26 16:51:34 |
    +-------------+----------+---------------------+
    7 rows in set (0.06 sec)
    注:发现以updateonly方式导出时,只更新,不会插入新行。

    5 指定update-mode为allowinsert方式导出

    1)修改数据
    mysql> update lang set name='CN',last_update=current_timestamp where language_id=7;
    Query OK, 1 row affected (0.14 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select *from lang order by 1;
    +-------------+----------+---------------------+
    | language_id | name     | last_update         |
    +-------------+----------+---------------------+
    |           1 | English  | 2006-02-15 05:02:19 |
    |           2 | Italian  | 2006-02-15 05:02:19 |
    |           3 | Japanese | 2006-02-15 05:02:19 |
    |           4 | Mandarin | 2006-02-15 05:02:19 |
    |           5 | French   | 2006-02-15 05:02:19 |
    |           6 | German   | 2006-02-15 05:02:19 |
    |           7 | CN       | 2018-06-27 12:22:51 |
    +-------------+----------+---------------------+
    7 rows in set (0.01 sec)
    2)进行导出
    [hadoop@strong ~]$ sqoop export --connect jdbc:mysql://strong.hadoop.com:3306/sakila --username root --password root --table lang --export-dir /user/sqoop1/language --update-key language_id --update-mode allowinsert
    3)查看数据
    mysql> select *from lang order by 1;
    +-------------+----------+---------------------+
    | language_id | name     | last_update         |
    +-------------+----------+---------------------+
    |           1 | English  | 2006-02-15 05:02:19 |
    |           2 | Italian  | 2006-02-15 05:02:19 |
    |           3 | Japanese | 2006-02-15 05:02:19 |
    |           4 | Mandarin | 2006-02-15 05:02:19 |
    |           5 | French   | 2006-02-15 05:02:19 |
    |           6 | German   | 2006-02-15 05:02:19 |
    |           7 | Chinese  | 2018-06-26 16:51:34 |
    |           8 | GD       | 2018-06-26 17:54:54 |
    +-------------+----------+---------------------+
    8 rows in set (0.00 sec)
    注:以allowinsert方式作为更新模式时,可以进行更新和插入操作。

  • 相关阅读:
    某题2
    某题1
    某题
    DAY 7
    DAY 4
    数据结构(六)图
    【转载】大数据面试知识图谱
    数据结构(四)二叉树
    Scala(一)基础
    Java虚拟机(一)
  • 原文地址:https://www.cnblogs.com/alen-liu-sz/p/12975631.html
Copyright © 2011-2022 走看看