Sqoop学习笔记

Sqoop

Chapter1 Sqoop介绍

Apache Sqoop是在Hadoop生态体系和RDBMS体系之间传送数据的一种工具

工作机制是将导入或者导出命令翻译成mr程序来实现,在翻译出的mr中主要是对inputformat和outputformat进行定制

hadoop生态系统包括:hdfs,hive,hbase等
rdbms体系包括:mysql,oracle,db2,postgresql

sqoop可以理解为:sql 到 Hadoop和Hadoop 到 sql

1.1 安装

安装 sqoop 的前提是已经具备 java 和 hadoop 的环境
最新稳定版: 1.4.6

配置文件修改:
cd $SQOOP_HOME/conf
mv sqoop-env-template.sh sqoop-env.sh
vi sqoop-env.sh
export HADOOP_COMMON_HOME= /export/servers/hadoop-2.7.5
export HADOOP_MAPRED_HOME= /export/servers/hadoop-2.7.5
export HIVE_HOME= /export/servers/hive

加入 mysql 的 jdbc 驱动包
cp /hive/lib/mysql-connector-java-5.1.32.jar $SQOOP_HOME/lib/


安装完成之后可以用如下方式测试:
sqoop list-databases --connect jdbc:mysql://master:3306/ --username root --password 123456
或者
sqoop list-databases \
--connect jdbc:mysql://master:3306/ \
--username root --password 123456

Chapter2 Sqoop导入

2.1 导入和导出

import:数据导入,RDBMS->Hadoop
export:数据导出,Hadoop->RDBMS

2.2 全量导入Mysql数据到hdfs

bin/sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://master:3306/userdb \
--username root \
--password 123456 \
--target-dir /sqoopresult \
--table emp --m 1 \
--delete-target-dir 

这里的--delete-target-dir 后面不要加目录,表示如果目标路径存在就先删除
--connect中最好不要用localhost,使用ip地址或者映射
未指定分隔符,默认是逗号分隔
可以使用--fields-terminated-by '\t'来指定
--m 表示启动多少个maptask来执行,如果启动多个maptask,需要
如果表的数据比较大 可以并行启动多个maptask执行导入操作,如果表没有主键,可以不用指定切分字段(会使用主键切分),如果没有主键,请指定根据哪个字段进行切分,例如
--split-by id \,如果既没有主键,又没有指定切分字段,maptask只能为1

2.3 全量导入mysql表数据到hive

2.3.1 先复制表结构到hive中再导入数据

sqoop create-hive-table \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://master:3306/userdb \
--table emp_add \
--username root \
--password 123456 \
--hive-table test.emp_add_sp

sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://master:3306/userdb \
--username root \
--password 123456 \
--table emp_add \
--hive-table test.e \
--hive-import \
--m 1

2.3.2 直接导入mysql数据到hive中

sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://master:3306/userdb \
--username root \
--password 123456 \
--table emp_conn \
--hive-import \ 
--m 1 \
--hive-database test;

如果hive中表不存在就创建,表名和mysql表名相同

2.3.3 导入表数据子集(where过滤)

sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://master:3306/userdb \
--username root \
--password 123456 \
--whe
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StoicD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值