30离线系统辅助工具sqoop——好程序

1、sqoop是什么
Apache Sqoop(TM) is a tool designed for efficiently transferring bulk data between Apache Hadoop and structured datastores such as relational databases.(就是一个工具而已,没有集群的概念,是一个单机版的)

本质:
将sqoop的语句转换成mapreduce任务(maptask) 
特点:
优点:跨平台进行数据整合
缺点:不是很灵活

mysql<-->hdfs
mysql--->hive
mysql--->hbase

从mysql读,写到集群里面去

关键字:
import:从mysql等关系型数据库(jdbc)导数据到hadoop
export:从hadoop将数据导出到mysql等关系型数据库

sqoop的安装
1、解压到指定目录
2、配置sqoop的环境变量,然后souce一下


3、编辑一下运行文件
vi sqoop-env.sh
export HADOOP_COMMON_HOME=/usr/local/hadoop-2.7.1
export HADOOP_MAPRED_HOME=/usr/local/hadoop-2.7.1

4、将mysql的驱动包上传到sqoop的安装目录下的lib目录中

5、用sqoop help 查看帮助

sqoop与mysql进行关联

 sqoop与hive库连接

=======

 

sqoop是不允许换行的,如果换行,需要一个反斜杠\

案例1:将userdb库的emp表的数据导入到hdfs上(表上不存在主键时)  -m 1是指定切片数

sqoop import --connect jdbc:mysql://hadoop0001:3306/userdb \
--username root \
--password 123456 \
--table emp -m 1

没有主键的需要直接指定id,用id来进行分片

sqoop import --connect jdbc:mysql://hadoop0001:3306/userdb \
--username root \
--password 123456 \
--table emp \
--split-by id \
--target-dir /gp1923/sqoopdata/1

案例:需要导入的不是所有数据,而是带条件导入

sqoop import --connect jdbc:mysql://hadoop0001:3306/userdb \
--username root \
--password 123456 \
--table emp \
--split-by id \
--target-dir /gp1923/sqoopdata/3 \
--where 'id > 1203'

带条件导入部分字段--columns

sqoop import --connect jdbc:mysql://hadoop0001:3306/userdb \
--username root \
--password 123456 \
--table emp \
--split-by id \
--target-dir /gp1923/sqoopdata/4 \
--where 'id > 1202' \
--columns 'id,name,salary'

导入一个查询结果集(导一个查询语句)后面要加and $CONDITIONS 不然报错,是因为先要确定表结构

sqoop import --connect jdbc:mysql://hadoop0001:3306/userdb \
--username root \
--password 123456 \
--split-by id \
--target-dir /gp1923/sqoopdata/5 \
--query 'select id,name,salary from emp where id < 1203 and $CONDITIONS'

数据导入到hive中(要找到hive的参数--hive-import ,指定hive的表--create-hive-table)但是表一个要

sqoop import --connect jdbc:mysql://hadoop0001:3306/userdb \
--username root \
--password 123456 \
--table emp \
--split-by id \
--hive-import \
--create-hive-table \
--hive-table gp1923.ods_emp


增量导入数据:

sqoop import --connect jdbc:mysql://hadoop0001:3306/userdb \
--username root \
--password 123456 \
--table emp \
--split-by id \
--target-dir /gp1923/sqoopdata/7 \
--incremental append \
--check-column id \
--last-value 0 

创建成一个job 

sqoop job --create gp1923_emp -- \
import --connect jdbc:mysql://hadoop0001:3306/userdb \
--username root \
--password 123456 \
--table emp \
--split-by id \
--target-dir /gp1923/sqoopdata/7 \
--incremental append \
--check-column id \
--last-value 0 

 

 


导出数据到mysql

sqoop export \
--connect jdbc:mysql://hadoop0001:3306/userdb \
--username root \
--password 123456 \
--table employee \
--export-dir /gp1923/sqoopdata/7


job

sqoop job --create jobname
          --list
          --show jobname
          --exec jobname
          
mysql表的编码格式为utf8
hdfs文件中的列的类型和mysql表中的字段列的类型尽量一致
导出暂时不能有hive或者hbase导出到mysql中
--export-dir是一个hdfs的目录时,它不识别_SUCCESS文件
--query 导入时要注意需要添加一个$CONDITIONS    。  

 

数据导入,数据导出,数据清洗,然后才到数据BI部门,专门写SQL
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值