Sqoop导入数据

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Sqoop导入数据样例

一、Sqoop的简介

 SQL To Hadop,目的是完成关系型数据库导入导出到Hadoop!

 Sqoop的原理是讲命令翻译为MR执行,MR没有Reduce阶段,只有Map阶段!

二、 Sqoop的安装

1.配置环境

 可以在/etc/profile中配置,导出为全局变量

 或

 sqoop-env.sh


 配置 HADOOP_HOME,HIVE_HOME,HBASE_HOME,ZOOKEEPER_HOME

 

2.将连接mysql的驱动,拷贝到sqoop的lib目录

3.测试

bin/sqoop list-databases --connect jdbc:mysql://hadoop102:3306/ --username root --password 123456

三、import

1. 导入到HDFS

// \代表在shell窗口中换行
bin/sqoop import \
// 连接的url
--connect jdbc:mysql://hadoop102:3306/mydb \
// 用户名
--username root \
// 密码
--password 123456 \
// 要导哪个表的数据
--table staff \
// 将数据导入到hdfs的哪个路径
--target-dir /company \
// 如果目标目录存在就删除
--delete-target-dir \
// 导入到hdfs上时,mysql中的字段使用\t作为分隔符
--fields-terminated-by "\t" \
// 设置几个MapTask来运行
--num-mappers 2 \
// 基于ID列,将数据切分为2片,只有在--num-mappers>1时才需要指定,选的列最好不要有null值,否则null
// 是无法被导入的!尽量选取主键列,数字列
--split-by id
// 只导入id和name 列
--columns id,name \
// 只导入复合过滤条件的行
--where 'id >= 10 and id <= 20' \
// 执行查询的SQL,讲查询的数据进行导入,如果使用了--query,不加再用--table,--where,--columns
// 只要使用--query ,必须添加$CONDITONS,这个条件会被Sqoop自动替换为一些表达式
--query "SQL"
-----------------------
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/mydb \
--username root \
--password 123456 \
--table t_emp \
--target-dir /t_emp \
--delete-target-dir \
--fields-terminated-by "\t" \
--num-mappers 2 \
--split-by id \
--columns age,name \
--where 'id >= 5 and id <= 10'
---------------------------
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/mydb \
--username root \
--password 123456 \
--query "select * from t_emp where \$CONDITIONS and id >=2" \
--target-dir /t_emp \
--delete-target-dir \
--fields-terminated-by "\t" \
--num-mappers 2 \
--split-by id

2.导入到Hive

Sqoop导入到hive,先讲数据导入到HDFS,再讲HDFS的数据,load到hive表中!

$ bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/company \
--username root \
--password 123456 \
--table staff \
--num-mappers 1 \
//导入到hive
--hive-import \
//导入到hive表中字段的分隔符
--fields-terminated-by "\t" \
// 是否以insert overwrite方式覆盖导入数据
--hive-overwrite \
// 要导入的hive表的名称,会自动帮助我们建表。建议还是在hive中手动建表,需要注意和mysql表的数据类型匹配
--hive-table staff_hive
-----------------------------
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/mydb \
--username root \
--password 123456 \
--table t_emp \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table t_emp

3.导入到hbase

 目前使用的sqoop1.4.6对应的是低版本的hbase,目前的1.3.0的hbase版本有点高!

 在执行导入时,sqoop是可以帮我们自动建表,在使用1.3.0hbase时,建表会失败!

 建议手动建表!

bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/mydb \
--username root \
--password 123456 \
--table t_emp \
//如果表不存在,hbase自动建表
--hbase-create-table \
// 导入的表名
--hbase-table "t_emp" \
// mysql的哪一列作为rowkey
--hbase-row-key "id" \
//导入的列族名
--column-family "info" \
--num-mappers 1 \
--split-by id  
---------------------------
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/mydb \
--username root \
--password 123456 \
--table t_emp \
--hbase-create-table \
--hbase-table "t_emp" \
--hbase-row-key "id" \
--column-family "info" \
--num-mappers 1

 

 

 

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
6月前
|
SQL 分布式计算 Oracle
使用Sqoop从Oracle数据库导入数据
使用Sqoop从Oracle数据库导入数据
使用Sqoop从Oracle数据库导入数据
|
SQL 分布式计算 关系型数据库
大数据 | (五)通过Sqoop实现从MySQL导入数据到HDFS
大数据 | (五)通过Sqoop实现从MySQL导入数据到HDFS
450 0
|
SQL Java 数据库连接
sqoop 从sqlserver2008 导入数据到hadoop
今天终于开始上手导入数据到hadoop了,哈哈,过程蛮崎岖的,和官方文档的还不太一样。 OK,let's go!试验对象是我第一个名为ST_Statistics的一张表,我要把我表里的数据导入到hdfs、hive以及hbase当中,然后试验才算完成。
5449 0
|
6月前
|
SQL 分布式计算 监控
Sqoop数据迁移工具使用与优化技巧:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入解析Sqoop的使用、优化及面试策略。内容涵盖Sqoop基础,包括安装配置、命令行操作、与Hadoop生态集成和连接器配置。讨论数据迁移优化技巧,如数据切分、压缩编码、转换过滤及性能监控。此外,还涉及面试中对Sqoop与其他ETL工具的对比、实际项目挑战及未来发展趋势的讨论。通过代码示例展示了从MySQL到HDFS的数据迁移。本文旨在帮助读者在面试中展现Sqoop技术实力。
475 2
|
数据采集 SQL 分布式计算
数据处理 、大数据、数据抽取 ETL 工具 DataX 、Kettle、Sqoop
数据处理 、大数据、数据抽取 ETL 工具 DataX 、Kettle、Sqoop
1420 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
53 3
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
86 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
37 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
46 0

热门文章

最新文章