sqoop_导图简介+操作代码

在这里插入图片描述
【操作】

【关键字】

--connect					指定数据库链接url
--username					指定数据库的用户名
--password					指定数据库的密码
--table						指定要导出数据的mysql数据库表
-m						指定MapTask的个数
--target-dir					指定导出数据在HDFS上的存储目录
--fields-terminated-by				指定每条记录中字段之间的分隔符
--where						指定查询SQL的where条件
--query						指定查询SQL
--columns					指定查询列

【导入】创建一张跟mysql中的help_keyword表一样的hive表hk

sqoop create-hive-table \
--connect jdbc:mysql://hadoop02:3306/mysql \
--username root \
--password root \
--table help_keyword \
--hive-table hk

【导入】导入MySQL表中数据到HDFS中

sqoop import   \
--connect jdbc:mysql://hadoop02:3306/mysql   \
--username root  \
--password root   \
--table help_keyword   \
-m 1

导入mysql库中的help_keyword的数据到HDFS上的默认路径:
/user/hadoop/help_keyword
导入mysql库中的help_keyword的数据到Hive的默认仓库路径:
/user/hive/warehouse

【导入】指定分隔符和导入路径

sqoop import   \
--connect jdbc:mysql://hadoop02:3306/mysql   \
--username root  \
--password root   \
--table help_keyword   \
--target-dir /user/hadoop11/my_help_keyword1  \
--fields-terminated-by '\t'  \
-m 2

【导入】指定列

sqoop import   \
--connect jdbc:mysql://hadoop02:3306/mysql   \
--username root  \
--password root   \
--columns "name" \
--where "name='STRING' " \
--table help_keyword  \
--target-dir /sqoop/hadoop11/myoutport22  \
-m 1
selct name from help_keyword where name = "string"

【导入】带where条件

sqoop import   \
--connect jdbc:mysql://hadoop02:3306/mysql   \
--username root  \
--password root   \
--where "name='STRING' " \
--table help_keyword   \
--target-dir /sqoop/hadoop11/myoutport1  \
-m 1

【导入】指定自定义查询SQL

sqoop import   \
--connect jdbc:mysql://hadoop02:3306/  \
--username root  \
--password root   \
--target-dir /user/hadoop/myimport33_1  \
--query 'select help_keyword_id,name from mysql.help_keyword where $CONDITIONS and name = "STRING"' \
--split-by  help_keyword_id \
--fields-terminated-by '\t'  \
-m 4

sqoop import   \
--connect jdbc:mysql://hadoop02:3306/mysql   \
--username root  \
--password root   \
--target-dir /user/hadoop/myimport33_2  \
--query "select help_keyword_id,name from help_keyword WHERE \$CONDITIONS"  \
--split-by  help_keyword_id \
--fields-terminated-by '\t'  \
-m 2

在以上需要按照自定义SQL语句导出数据到HDFS的情况下:
1、引号问题,要么外层使用单引号,内层使用双引号,$CONDITIONS的$符号不用转义,要么外层使用双引号,那么内层使用单引号,然后$CONDITIONS的$符号需要转义
2、自定义的SQL语句中必须带有WHERE $CONDITIONS

【导入】MySQL数据库中的表数据到Hive中

sqoop import   \
--connect jdbc:mysql://hadoop02:3306/mysql   \
--username root  \
--password root   \
--table help_keyword   \
--hive-import \
-m 1

第一步:导入mysql.help_keyword的数据到hdfs的默认路径
第二步:自动仿造mysql.help_keyword去创建一张hive表, 创建在默认的default库中
第三步:把临时目录中的数据导入到hive表中

【导入】MySQL数据库中的表数据到Hive中
指定行分隔符和列分隔符
指定hive-import
指定覆盖导入
指定自动创建hive表
指定表名
指定删除中间结果数据目录

sqoop import  \
--connect jdbc:mysql://hadoop02:3306/mysql  \
--username root  \
--password root  \
--table help_keyword  \
--fields-terminated-by "\t"  \
--lines-terminated-by "\n"  \
--hive-import  \
--hive-overwrite  \
--create-hive-table  \
--delete-target-dir \
--hive-database  mydb_test \
--hive-table new_help_keyword

sqoop会自动给创建hive的表,但是不会自动创建不存在的库。

【导入】增量导入

sqoop import   \
--connect jdbc:mysql://hadoop02:3306/mysql   \
--username root  \
--password root   \
--table help_keyword  \
--target-dir /user/hadoop/myimport_add  \
--incremental  append  \  
--check-column  help_keyword_id \
--last-value 500  \
-m 1

【导入】mysql数据到hbase

sqoop import \
--connect jdbc:mysql://hadoop02:3306/mysql \
--username root \
--password root \
--table help_keyword \
--hbase-table new_help_keyword \
--column-family person \
--hbase-row-key help_keyword_id

【导出】

可以从HDFS导出到MySQL
可以从Hive导出数据到MySQL
不可以让HBase的数据导出到MySQL

【注意】

导出的RDBMS的表必须自己预先创建,不会自动创建

建库

create database sqoopdb default character set utf8 COLLATE utf8_general_ci; 
use sqoopdb;

建表

CREATE TABLE sqoopstudent ( 
   id INT NOT NULL PRIMARY KEY, 
   name VARCHAR(20), 
   sex VARCHAR(20),
   age INT,
   department VARCHAR(20)
);

【导出】 HDFS数据到MySQL

sqoop export \
--connect jdbc:mysql://hadoop02:3306/spider  \
--username root \
--password root \
--table student \
--export-dir /sqoop/student/ \
--fields-terminated-by ','

【导出】hive数据到MySQL

sqoop export \
--connect jdbc:mysql://hadoop02:3306/sqoopdb \
--username root \
--password root \
--table uv_info \
--export-dir /user/hive/warehouse/uv/dt=2011-08-03 \
--input-fields-terminated-by '\t'

【其他操作】

【查询】列出MySQL数据有哪些数据库

sqoop list-databases \
--connect jdbc:mysql://hadoop02:3306/ \
--username root \
--password root

【查询】列出MySQL中有哪些数据表

sqoop list-tables \
--connect jdbc:mysql://hadoop02:3306/mysql \
--username root \
--password root

猜你喜欢

转载自blog.csdn.net/Wh1teMaster/article/details/83586361
今日推荐