大数据开发教程——Apache Sqoop介绍及数据迁移

Sqoop是一个用于在Hadoop和关系数据库间进行数据传输的工具,常被应用开发人员、系统管理员和数据库管理员使用。本文详细介绍了Sqoop的安装步骤,包括配置环境变量、添加MySQL驱动等,并展示了如何使用Sqoop进行全量和增量导入数据到HDFS,以及将数据从MySQL迁移到HBase。此外,还提及了Sqoop在增量导入时如何处理时间戳字段,确保数据的一致性。
摘要由CSDN通过智能技术生成

什么是Sqoop?

Sqoop是一个用于在Hadoop和关系数据库,或商业服务器之间的数据传输的工具
从RDB导入数据到HDFS)
导出数据从HDFS到RDB
Sqoop使用MapReduce导入和导出数据,提供并行操作和容错

Sqoop使用者有哪些?
  • application programmers (应用开发人员)
  • System administrators (系统管理员)
  • Database administrators (数据库管理员)
  • Sqoop底层就是mapreduce任务,但是只有map,没有reduce

Sqoop安装

第一步:准备安装包:sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz 
安装Sqoop的前提是已经具备Java和Hadoop的环境
第二步:解压安装到安装目录
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C ../install/ 
第三步:修改配置文件sqoop-env.sh
进入conf文件夹    cp sqoop-env-template.sh sqoop-env.sh 
修改sqoop-env.sh
配置hadoop,hbase,hive,zookeeper等的安装位置
export HADOOP_COMMON_HOME=/root/install/hadoop-2.7.7
export HADOOP_MAPRED_HOME=/root/install/hadoop-2.7.7
export HADOOP_CONF_DIR=/root/install/hadoop-2.7.7/etc/hadoop
export HIVE_CONF_DIR=/root/install/apache-hive-2.3.6-bin/conf
export HIVE_HOME=/root/install/apache-hive-2.3.6-bin
export HBASE_HOME=/root/install/hbase-1.2.12
export ZOOCFGDIR=/root/install/zookeeper-3.4.14/conf
export ZOOKEEPER_HOME=/root/install/zookeeper-3.4.14
第四步:加入mysql驱动包到sqoop-1.4.7/lib目录下 
第五步:配置环境变量
第六步:验证sqoop是否安装成功 
sqoop version
列出MySQL数据有哪些数据库: 
sqoop list-databases \
--connect jdbc:mysql://hadoop5:3306/ \ 
--username root \
--password hadoop
列出MySQL中的某个数据库有哪些数据表: 
sqoop list-tables \
--connect jdbc:mysql://hadoop5:3306/shopping_db \ 
--username root \
--password hadoop

Sqoop 增量导入

  • 追加所有匹配的记录(可能 在目标中创建重复记录)
  • 在源表中有数据更新的时候使用,检查列就必须是一个时间戳或日期类型的字段,更新完之后, last-value会被设置为执行增量导入时的当前系统时间)
//结合hive的分区理解,比如说hive表是分区表,按照day分区,那么每天都要新增一个分区并且导入数据, 
这种情况下需要使用sqoop的增量导入,增量导入就是导入一个分区的数据。
//全量导入:就是一次性导入所有数据 
sqoop import \
--connect jdbc:mysql://localhost/sqoop_db \
--driver com.mysql.jdbc.Driver \
--table departments \
--username root \
--password hadoop \
--incremental append \
--check-column department_id \
--last-value '3' \
--target-dir /sqoop/db/departments \
--m 1
MySQL -> HBase数据迁移
#创建hbase的table
create 'products','data','category' 
#sqoop import shell
sqoop import \
--connect jdbc:mysql://localhost/sqoop_db \ 
--username root \
--password hadoop \
--driver com.mysql.jdbc.Driver \ 
--table products \
--columns
"product_id,product_name,product_description,product_price,product_image" \ 
--hbase-table products \
--column-family data \ 
--hbase-row-key product_id \ 
--m 1
count 'products'
scan 'products' , { LIMIT => 10 } 
#插入category 数据
sqoop import \
--connect jdbc:mysql://localhost/sqoop_db \ 
--username root \
--password hadoop \
--driver com.mysql.jdbc.Driver \
--query "select p.product_id,c.category_name from products p inner join categories 
c on p.product_category_id = c.category_id and \$CONDITIONS" \
--split-by product_id \ 
--hbase-table products \ 
--column-family category \ 
--hbase-row-key product_id \ 
--m 1
count 'products'
scan 'products' , { LIMIT => 10 }

更多大数据开发学习教程和内容戳⬇⬇⬇

免费领取500节大数据开发课程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值