sqoop全量导入操作

1.sqoop简介

 sqoop是一款对数据导入和导出的软件

导入:是将RDBMS关系型数据库中的数据导入到hadoop集群中(hbase\hive\hdfs....)

导出:是将hdfs集群环境中的数据导出到RDBMS关系型数据库中


2.全量导入

2.1RDBMS--->hdfs导入

/{%sqoophome}/bin/sqoop import --connect jdbc:mysql://{mysql服务器IP地址}:3306/{连接数据库名} --username {用户名} --password {mysql连接密码} --table {表名} --target-dir {导入到hdfs的路径} --m 1
  1. --target-dir:是将数据导入到hdfs后的路径,不可以存在,假如已经存在,运行就会报错(sqoop底层实现是mr)
  2. --m 1:代表运行一个maptask,默认是没有reducetask的

注意:如果不写--target-dir,那么sqoop将会在hdfs上的/user/root/目录下生成一个跟表名相同的文件夹,导入的数据就在该文件夹中

2.2RDBMS--->hive

从关系型数据库导入到hive中有两种方案

方案一:先导入表结构,再导入表数据

导入表结构操作

bin/sqoop create-hive-table \
--connect jdbc:mysql://mysql服务主机ip:3306/数据库名 \
--username {用户名} --password {密码} \
--table {表名}
--hive-table {hive数据库名}.{导入后的表名}
  1. --create-hive-table:声明该操作为建表操作
  2. --hive-table:在指定的数据库下生成指定表名的数据库

导入表数据的操作

bin/sqoop import \
--connect jdbc:mysql://{mysql服务器ip}:3306/{连接的数据库名} \
--username {用户名} --password {密码} \
--table {表名} \
--m 1 \
--hive-table {hive库名}.{表名} \
--hive-import
  1. --hive-import:声明该操作为向hive中添加数据

     

方案二:直接导入表结构以及表数据

bin/sqoop import \
--connect jdbc:mysql://{mysql服务器ip}:3306/{数据库名} \
--username {用户名} \
--password {密码} \
--table {表名} \
--hive-import \
--m 1 \
--hive-database {hive库名};

该方案中的hive生成的表名与mysql中的表名相同


2.3表数据子集

2.3.1where子句

bin/sqoop import \
--connect jdbc:mysql://{mysql服务ip}:3306/{数据库名} \
--username {用户名} \
--password {密码} \
--where "条件" \
--target-dir {hdfs地址}\
--table {表名}\
--m 1

将符合where条件中的数据的所有字段导入到hdfs中

2.3.2query查询

bin/sqoop import \
--connect jdbc:mysql://{mysql服务ip}:3306/{数据库} \
--username {用户名} \
--password {密码} \
--target-dir {hdfs路径} \
--query 'select id,name,deg from emp WHERE id>1203 and $CONDITIONS' \
--split-by id \
--fields-terminated-by '\t' \
--m 2
  1. --query 后面使用sql语句
  2. SQL语句必须添加where条件,如果全都要的话,就写1=1
  3. SQL语句最后面一定要在where后加上and $CONDITIONS
  4. SQL语句必须使用单引号括起来(不要问为什么,记住就行),双引号也不可以
  5. 使用--query参数后,执行命令就不可以出现--table参数,因为在sql语句中已经指定了表

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值