Sqoop的导入导出

Sqoop 导入数据:

​ 在 Sqoop 中,“导入”概念指:从非大数据集群(RDBMS)向大数据集群(HDFS,HIVE,HBASE)中传输数据,叫做:导入,即使用 import 关键字。

RDBMS 到 HDFS:

​ RDBMS:关系数据库管理系统

全部导入

#!/usr/bin/env bash
sqoop import \
--connect jdbc:mysql://bigdata111:3306/test \
--username root \
--password 000000 \
--table student \
--target-dir /user/test/student \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"

​ --connect:连接数据库

​ --username:用户名

​ --password:密码

​ --table:导入的表

​ --target-dir:导入到 HDFS 上的路径

​ --delete-target-dir:如果已经存在就删除

​ --num-mappers 1:MR 个数

​ --fields-terminated-by:分隔符

查询导入

#!/usr/bin/env bash
sqoop import \
--connect jdbc:mysql://bigdata111:3306/test \
--username root \
--password 000000 \
--target-dir /user/test/student1 \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--query 'select name,sex from student where id <=6 and $CONDITIONS;'

尖叫提示:must contain ‘$CONDITIONS’ in WHERE clause. 注:CONDITIONS 翻译‘条件’

尖叫提示:如果后使用的是双引号,则前必须加转移符,防止识别为自己的变量。

导入指定列

#!/usr/bin/env bash
sqoop import \
--connect jdbc:mysql://bigdata111:3306/test \
--username root \
--password 000000 \
--target-dir /user/test/student2 \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--columns id,name \
--table student

尖叫提示:columns中如果涉及到多列,用逗号分隔,分隔时不要添加空格

使用sqoop关键字筛选查询导入数据:

#!/usr/bin/env bash
sqoop import \
--connect jdbc:mysql://bigdata111:3306/test \
--username root \
--password 000000 \
--target-dir /user/test/student3 \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--table student \
--where "id=2"

尖叫提示:在Sqoop中可以使用sqoop import -D property.name=property.value这样的方式加入执行任务的参数,多个参数用空格隔开。

RDBMS 到 Hive:

#!/usr/bin/env bash
sqoop import \
--connect jdbc:mysql://bigdata111:3306/test \
--username root \
--password 000000 \
--table student \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table jds.student_hive

尖叫提示:该过程分为两步,第一步将数据导入到HDFS,第二步将导入到HDFS的数据迁移到Hive仓库

尖叫提示:从MYSQL到Hive,本质时从MYSQL => HDFS => load To Hive

Sqoop 数据导出:

​ 在 Sqoop 中,“导出” 概念指:从大数据集群(HDFS,HIVE,HBASE)向非大数据集群(RDBMS)中传输数据,叫做:导出,即使用 export 关键字。

HIVE/HDFS 到 RDBMS:

#!/usr/bin/env bash
sqoop export \
--connect jdbc:mysql://bigdata111:3306/test?characterEncoding=utf-8 \
--username root \
--password 000000 \
--export-dir /user/hive/warehouse111/student_hive \
--table student1 \
--num-mappers 1 \
--input-fields-terminated-by "\t"

尖叫提示:Mysql 中如果表不存在,不会自动创建,自行根据表结构创建

思考:数据是覆盖还是追加 答案:追加

尖叫提示:如果是追加,数据库不能设置主键

尖叫提示:如果出现卡顿,则在 yarn-site.xml 中加入以下配置

 <property>
     <name>yarn.nodemanager.resource.memory-mb</name>
     <value>20480</value>
 </property>

 <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>2048</value>
 </property>

 <property>
     <name>yarn.nodemanager.vmem-pmem-ratio</name>
     <value>2.1</value>
 </property>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值