当前位置: 首页 > news >正文

sqoop的安装与使用

Sqoop是一个用于在hadoop与mysql之间传输数据的工具

Sqoop 环境搭建
(1)上传安装包:sqoop-1.4.6-cdh5.14.2.tar.gz到/opt/software
(2)解压安装包:tar -zxf sqoop-1.4.6-cdh5.14.2.tar.gz -C /opt/install/
(3)创建软连接:ln -s /opt/install/sqoop-1.4.6-cdh5.14.2/ /opt/install/sqoop
(4)配置环境变量:vi /etc/profile
   export SQOOP_HOME=/opt/install/sqoop
   export PATH=$SQOOP_HOME/bin:$PATH
(5)让配置文件生效:source /etc/profile
(6)切换到sqoop根目录下的conf目录,复制并改名配置文件:cp sqoop-env-template.sh sqoop-env.sh
(7)修改配置文件sqoop-env.sh,在文件末尾追加以下内容:
export HADOOP_COMMON_HOME=/opt/install/hadoop
export HADOOP_MAPRED_HOME=/opt/install/hadoop
export HIVE_HOME=/opt/install/hive
export ZOOCFGDIR=/opt/install/zookeeper
export HBASE_HOME=/opt/install/hbase
(8)复制以下文件到 sqoop 的 lib 目录下
   mysql-connector-java-5.1.27-bin.jar
   java-json.jar
   hive-common-1.1.0-cdh5.14.2.jar
   hive-exec-1.1.0-cdh5.14.2.jar
(9)验证 sqoop 配置是否正确:sqoop help
(10)测试 Sqoop 是否能够成功连接数据库:
    sqoop list-databases --connect jdbc:mysql://hadoop101:3306/ --username root --password 123
(11)做快照

连接数据库获取可用的数据库名称
sqoop list-databases \
--connect jdbc:mysql://hadoop101:3306 \
--username root \
--password 123 
连接数据库获取指定数据库中的所有数据表
sqoop list-tables \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/retail_db \
--userrname root \
--password 123 
执行导入命令
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/retail_db \
--username root \
--password 123 \
--table customers \
--target-dir /data/retail_db/customers \
--num-mappers 1
 从mysql导入指定表中带条件的数据到hdfs  1
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/retail_db \
--username root \
--password 123 \
--table orders \
--where 'order_id<500' \
--delete-target-dir \
--target-dir /data/retail_db/orders \
--num-mappers 1
从mysql导入指定表中字段且带条件的数据到hdfs   2
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/retail_db \
--username root \
--password 123 \
--table orders \
--where 'order_id<500' \
--columns order_id,order_data,order_customer_id \
--delete-target-dir \
--target-dir /data/retail_db/orders \
--num-mappers 1
从mysql导入指定查询语句的数据到hdfs【注:单双引号的区别,必须有where且以and $CONDITIONS结尾】
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/retail_db \
--username root \
--password 123 \
--query 'select * from orders where order_status!="CLOSED" and $CONDITIONS' \
--delete-target-dir \
--target-dir /data/retail_db/orders \
--num-mappers 1

sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/retail_db \
--username root \
--password 123 \
--query "select * from orders where order_status!='CLOSED' and \$CONDITIONS" \
--delete-target-dir \
--target-dir /data/retail_db/orders \
--num-mappers 3 \
--split-by order_id
在sqoop中第二次增量导入【其中last-value是大于的关系】
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/test \
--username root \
--password 123 \
--table student \
--target-dir /data/retail_db/student \
--incremental append \
--check-column id \
--last-value 2 \
--num-mappers 1
# 查看数据
hdfs dfs -cat /data/retail_db/student/*
# 结果
# 增加数据
insert into student values(5,'tim','male'),(6,'jim','male');
# PPT 演示
# 第一次全量导入
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/retail_db \
--username root \
--password 123 \
--query "select * from orders where order_date between '2013-07-01' and '2014-04-15' and \$CONDITIONS" \
--delete-target-dir \
--target-dir /data/retail_db/orders \
--num-mappers 3 \
--split-by order_id
# 第二次增量导入
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/retail_db \
--username root \
--password 123 \
--table orders \
--incremental append \
--check-column order_date \
--last-value 2014-04-15 \
--target-dir /data/retail_db/orders \
--num-mappers 3 \
--split-by order_id

# 导入mysql数据到hive中
# 启动hive
hiveserver2 &
# 进入客户端
beeline -ujdbc:hive2://hadoop101:10000 -nroot
# 创建数据库
create database retail_db;
# 导入数据
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/retail_db \
--username root \
--password 123 \
--table orders \
--where 'order_id<=10' \
--target-dir /data/retail_db/orders \
--delete-target-dir \
--hive-import \
--hive-database retail_db \
--hive-table orders \
--hive-overwrite \
--num-mappers 1
# 在hvie中查看表名称
show tables;
+-----------+--+
| tab_name  |
+-----------+--+
| orders    |
+-----------+--+
# 在hive中查看表结构
desc orders;
+--------------------+------------+----------+--+
|      col_name      | data_type  | comment  |
+--------------------+------------+----------+--+
| order_id           | int        |          |
| order_date         | string     |          |
| order_customer_id  | int        |          |
| order_status       | string     |          |
+--------------------+------------+----------+--+
# 在hive中查看表数据
select * from orders;
+------------------+------------------------+---------------------------+----------------------+--+
| orders.order_id  |   orders.order_date    | orders.order_customer_id  | orders.order_status  |
+------------------+------------------------+---------------------------+----------------------+--+
| 1                | 2013-07-25 00:00:00.0  | 11599                     | CLOSED               |
| 2                | 2013-07-25 00:00:00.0  | 256                       | PENDING_PAYMENT      |
| 3                | 2013-07-25 00:00:00.0  | 12111                     | COMPLETE             |
| 4                | 2013-07-25 00:00:00.0  | 8827                      | CLOSED               |
| 5                | 2013-07-25 00:00:00.0  | 11318                     | COMPLETE             |
| 6                | 2013-07-25 00:00:00.0  | 7130                      | COMPLETE             |
| 7                | 2013-07-25 00:00:00.0  | 4530                      | COMPLETE             |
| 8                | 2013-07-25 00:00:00.0  | 2911                      | PROCESSING           |
| 9                | 2013-07-25 00:00:00.0  | 5657                      | PENDING_PAYMENT      |
| 10               | 2013-07-25 00:00:00.0  | 5648                      | PENDING_PAYMENT      |
+------------------+------------------------+---------------------------+----------------------+--+

# 导入mysql数据到hive分区
# 删除存在的表
drop table if exists orders;
# 执行导入
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/retail_db \
--username root \
--password 123 \
--query 'select order_id,order_customer_id,order_status from orders where order_date="2014-07-24" and $CONDITIONS' \
--target-dir /data/retail_db/orders/order_date=2014-07-24 \
--delete-target-dir \
--hive-import \
--create-hive-table \
--hive-table retail_db.orders \
--hive-partition-key order_date \
--hive-partition-value 2014-07-24 \
--num-mappers 1
# 查看是否创建表
show tables;
# 查看表结构
desc orders;
# 查看数据
select * from orders;
# 查看分区
show partitions orders;
+------------------------+--+
|       partition        |
+------------------------+--+
| order_date=2014-07-24  |
+------------------------+--+

# 通过sqoop job实现“自动”增量导入功能
# 创建密码文件
echo -n 123 > mysqlpwd
# 创建新的job
sqoop job \
--create job01 \
-- import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/test \
--username root \
--password-file 'file:///root/mysqlpwd' \
--table student \
--target-dir /data/retail_db/student \
--hive-import \
--hive-database retail_db \
--hive-table student \
--incremental append \
--check-column id \
--last-value 0 \
--num-mappers 1
# 查看job
sqoop job --list
# 执行job,此时为全量导入
sqoop job --exec job01
# 测试在mysql中添加一条新数据
insert into student values(7,'rose','female');
# 执行job,此时为增量导入
sqoop job --exec job01
# 在hive中查看数据
select * from student;

# 导入mysql数据到hbase
# 启到hbase服务
zkServer.sh start
hbase-daemon.sh start master
hbase-daemon.sh start regionserver
# 执行sqoop
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/retail_db \
--username root \
--password 123 \
--table products \
--hbase-create-table \
--hbase-table products \
--hbase-row-key product_id \
--column-family data \
--num-mappers 1
# 打开hbase客户端
hbase shell
# 查看数据
scan 'products'

# 导出hdfs数据到mysql
# 创建mysql表
use test;
create table student2 like student;
# 执行sqoop导入mysql中的student表中数据到hdfs的student表
sqoop import \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/test \
--username root \
--password 123 \
--table student \
--target-dir /data/retail_db/student \
--delete-target-dir \
--num-mappers 1
# 执行sqoop导出hdfs中student表中的数据到mysql的student2表
sqoop export \
--driver com.mysql.jdbc.Driver \
--connect jdbc:mysql://hadoop101:3306/test \
--username root \
--password 123 \
--table student2 \
--export-dir '/data/retail_db/student' \
--num-mappers 1
# 查看数据
select * from student2;

相关文章:

sqoop的安装与使用

Sqoop是一个用于在hadoop与mysql之间传输数据的工具 Sqoop 环境搭建 (1)上传安装包:sqoop-1.4.6-cdh5.14.2.tar.gz到/opt/software (2)解压安装包:tar -zxf sqoop-1.4.6-cdh5.14.2.tar.gz -C /opt/install/ (3)创建软连接:ln -s /opt/install/sqoop-1.4.6-cdh5.14.2/ /opt/ins…...

【docker】Docker Stack 详细使用及注意事项

一、什么是 Docker Stack Docker Stack 是 Docker Swarm 环境中用于管理一组相关服务的工具。它使得在 Swarm 集群中部署、管理和扩展一组相互关联的服务变得简单。主要用于定义和编排容器化应用的多个服务。以下是 Docker Stack 的一些关键特点&#xff1a; 服务集合&#xf…...

Android开发基础(四)

Android开发基础&#xff08;四&#xff09; 本篇将从Android数据存储方式去理解Android开发。 Android数据存储方式 Android提供了多种数据存储方式。 一、SharedPreferences存储 主要用于存储一些简单的配置信息&#xff0c;如登录账号密码等&#xff1b; 这种存储方式采…...

HTML5+CSS3+JS小实例:音频可视化

实例:音频可视化 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><m…...

【写作】短篇《相遇与相守》

文章目录 前言背景角色故事梗概 第一章 缘分的邂逅第二章 心动的瞬间第三章 甜蜜的日子第四章 误会与和解第五章 共度风雨 前言 背景 时代背景 现代&#xff0c;一个充满忙碌和喧嚣的都市。这个都市是许多年轻人追求梦想和奋斗的地方&#xff0c;但也是许多人渴望寻找真挚感情…...

2024年最新软件测试面试题

Part1 1、你的测试职业发展是什么&#xff1f;【文末有面试文档免费领取】 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&#xff0c;按如何做…...

instanceof、对象类型转化、static关键字

instanceof 与 对象类型转换 instanceof是判断一个对象是否与一个类有关系的关键字 先看引用类型&#xff0c;再看实际类型 *例子&#xff1a;obj instanceof A 先看obj的类型是否与A有关联&#xff0c;无关联则报错&#xff0c;有关联则判断obj的实际类型 因为obj的实际类…...

学习笔记-python文件基本操作

1.文件的基本操作 open()打开函数 语法 : open(name,mode) name&#xff1a;是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。 mode&#xff1a;设置打开文件的模式(访问模式)&#xff1a;只读、写入、追加等。 # 打开文件open(): 如果报FileNotFoundError,文件路…...

【Scala】——流程控制

1 if-else 分支控制 让程序有选择的的执行&#xff0c;分支控制有三种&#xff1a;单分支、双分支、多分支 1.1单分支 if (条件表达式) {执行代码块 }1.2 双分支 if (条件表达式) {执行代码块 1 } else {执行代码块 2 }1.3 多分支 if (条件表达式1) {执行代码块 1 } else …...

imgaug库指南(20):从入门到精通的【图像增强】之旅

引言 在深度学习和计算机视觉的世界里&#xff0c;数据是模型训练的基石&#xff0c;其质量与数量直接影响着模型的性能。然而&#xff0c;获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此&#xff0c;数据增强技术应运而生&#xff0c;成为了解决这一问题的…...

最新AI绘画Midjourney绘画提示词Prompt大全

一、Midjourney绘画工具 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭…...

编写一个简单的服务和客户端(C++)

背景 当节点使用服务进行通信时&#xff0c;发送数据请求的节点称为客户端节点&#xff0c;响应请求的节点称为服务节点。请求和响应的结构由.srv文件确定。 这里使用的例子是一个简单的整数加法系统&#xff1b;一个节点请求两个整数之和&#xff0c;另一个节点响应结果。 …...

InseRF: 文字驱动的神经3D场景中的生成对象插入

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

类厂,变长参数,序列化

目的 在记录nav2中的各类信息,保存到文件中,以便后面回放来分析算法的编程中发现。 各种信息记录的数据不同,可能还会有变化,所以决定采用类厂模式,参见C++设计模式入门 记录的基类 有个信息记录的基类,不同的记录对应不同的子类。 enum rcdType{RT_NA,RT_nav2Info,R…...

LLK的2023年度总结

文章目录 一月二月三月四月五月六月七月八月九月十月十一月十二月 一月 此时的俺还在沉浸在蓝桥杯的练习和女朋友的甜蜜期&#xff0c;感觉没啥大长进。然后荣幸地知道了自己C语言实验因为某种非技术原因而挂科了。此时自己地目标由保研自然地转换到考研比赛就业的方向了。接着…...

Redis-浅谈redis.conf配置文件

Redis.conf Redis.conf是Redis的配置文件&#xff0c;它包含了一系列用于配置Redis服务器行为和功能的选项。 以下是Redis.conf中常见的一些选项配置&#xff1a; bind: 指定Redis服务器监听的IP地址&#xff0c;默认为127.0.0.1&#xff0c;表示只能本地访问&#xff0c;可以…...

【liunx】线程池+单例模式+STL,智能指针和线程安全+其他常见的各种锁+读者写者问题

线程池单例模式STL,智能指针和线程安全其他常见的各种锁读者写者问题 1.线程池2.线程安全的单例模式3.STL,智能指针和线程安全4.其他常见的各种锁4.读者写者问题 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 1.线程池 目前我们学了挂起等待锁、条件变量、信…...

Golang的API项目快速开始

开启一个简单的API服务。 golang的教程网上一大堆&#xff0c;官网也有非常详细的教程&#xff0c;这里不在赘述这些基础语法教程&#xff0c;我们意在快速进入项目开发阶段。 golang好用语法教程传送门&#xff1a; m.runoob.com/go/ 编写第一个API 前提&#xff1a;按照上一…...

机器学习_实战框架

文章目录 介绍机器学习的实战框架1.定义问题2.收集数据和预处理(1).收集数据(2).数据可视化(3).数据清洗(4).特征工程(5).构建特征集和标签集(6).拆分训练集、验证集和测试集。 3.选择算法并建立模型4.训练模型5.模型的评估和优化 介绍机器学习的实战框架 一个机器学习项目从开…...

Java8常用新特性

目录 简介 1.默认方法 2..Lambda表达式 3.Stream API 4.方法引用 5.Optional类 简介 Java 8是Java编程语言的一个重要版本&#xff0c;引入了许多令人兴奋和强大的新特性。这些特性使得Java程序更加现代化、灵活和高效。让我们一起来探索一些Java 8的常用新特性吧&#…...

Go语言中的Channel

1. 简介 Channel是Go语言中一种重要的并发原语&#xff0c;它允许goroutine之间安全地交换数据。Channel是一个类型化的队列&#xff0c;它可以存储一个特定类型的值。goroutine可以通过发送和接收操作来向channel中写入和读取数据。 2. Channel的类型 Channel的类型由其元素…...

Unity中URP下实现深度贴花

文章目录 前言一、场景设置二、实现思路1、通过深度图求出像素所在视图空间的Z值2、通过模型面片的求出像素在观察空间下的坐标值3、结合两者求出 深度图中像素的 XYZ值4、再将此坐标转换到模型的本地空间&#xff0c;把XY作为UV来进行纹理采样 三、URP下实现1、通过深度图求出…...

openssl3.2 - 官方demo学习 - cipher - aesccm.c

文章目录 openssl3.2 - 官方demo学习 - cipher - aesccm.c概述笔记END openssl3.2 - 官方demo学习 - cipher - aesccm.c 概述 aesccm.c 是 AES-192-CCM 的加解密应用例子, 用的EVP接口. 看到不仅仅要用到key, iv, data, 在此之前还要设置 nonce, tag, 认证数据. 为啥需要设置…...

点云从入门到精通技术详解100篇-基于多传感器融合的智能汽车 环境感知(下)

目录 基于激光雷达点云的目标检测 4.1 点云神经网络检测模型 4.2 点云预处理...

蓝桥杯单片机组备赛——蜂鸣器和继电器的基本控制

文章目录 一、蜂鸣器和继电器电路介绍二、题目与答案2.1 题目2.2 答案2.3 重点函数解析 一、蜂鸣器和继电器电路介绍 可以发现两个电路一端都接着VCC&#xff0c;所以我们只要给另一端接上低电平就可以让蜂鸣器和继电器进行工作。与操作LED类似&#xff0c;只不过换了一个74HC5…...

嵌入式linux 编译qt5(以v851s为例)

本文参考Blev大神的博客&#xff1a;Yuzuki Lizard V851S开发板 --移植 QT5.12.9教程&#xff08;群友Blev提供&#xff09; - Allwinner / 柚木PI-V851S - 嵌入式开发问答社区 (100ask.net) 一. 环境准备 1.下载qt5源码&#xff1a;Open Source Development | Open Source …...

uniapp 实战 -- app 的自动升级更新(含生成 app 发布页)

uniapp 提供了 App升级中心 uni-upgrade-center &#xff0c;可以便捷实现app 的自动升级更新&#xff0c;具体编码和配置如下&#xff1a; 1. 用户端 – 引入升级中心插件 下载安装插件 uni-upgrade-center - App https://ext.dcloud.net.cn/plugin?id4542 pages.json 中添加…...

微服务http调用其他服务的方法

在对应需要调的服务配置文件加上路径 #审批方案微服务配置 server.port: 9004 upload.path: /alldev/u01/ schedule.cron.countDown: 0 0 8-18 * * ? statistics.syskey: ywsp schedule.countDown.isExecute: true post.url.updateStatus: http://10.3.2.222:8888/ecological…...

vagrant 用户名密码登录

正常登录后 sudo -i 切换到root权限 vim /etc/ssh/vim sshd_config 将PasswordAuthentication no设置 为yes 重启sshd.service服务 systemctl restart sshd.service...

强化学习应用(三):基于Q-learning的无人机物流路径规划研究(提供Python代码)

一、Q-learning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个价值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是通过不断更新一个称为Q值的…...

传奇网站模板免费下载/项目宣传推广方案

基础架构实验室-正式开源物联网平台 麻烦走过路过的朋友帮忙点个Star&#xff0c;您的Star就是对我们最好的鼓励&#xff01; GitEE地址&#xff1a;基础架构实验室-物联网云平台 &#x1f985; 架构图 &#x1f42f; 平台简介 BasicLab基础架构实验室&#xff0c;目前只有…...

网站外链接如何做/国产最好的a级suv

数据库数据生成Excel表格&#xff08;多用在导出数据&#xff09; 最近在项目开发中遇到这样一个需求&#xff0c;用户聊天模块产品要求记录用户聊天信息&#xff0c;但只保存当天的&#xff0c;每天都要刷新清空数据&#xff0c;但聊天记录要以Excel的形式打印出来&#xff0c…...

做内贸哪个网站找客户/大数据培训机构排名前十

2019独角兽企业重金招聘Python工程师标准>>> 1、Integer 相等比较 public static void main(String[] args) {Integer d 127;Integer f 127;Integer e 130;Integer g 130;System.out.println(df);//trueSystem.out.println(eg);// false} 上述&#xff1a;总所周…...

广州一起做网站/中国科技新闻网

这是一种可以创建多线程消息的函数 使用方法&#xff1a;1&#xff0c;首先创建一个Handler对象 Handler handlernew Handler(); 2&#xff0c;然后创建一个Runnable对象 Runnable runnablenew Runnable(){ Override public void run() { // TODO Auto-generated met…...

广东商城网站建设报价/海外网络推广服务

ZOJ Problem Set - 3829Known Notation&#xff08;贪心&#xff09; 题目链接 题目大意&#xff1a;给你一个后缀表达式&#xff08;仅仅有数字和符号&#xff09;&#xff0c;可是这个后缀表达式的空格不幸丢失&#xff0c;如今给你一个这种后缀表达式&#xff0c;问最少须要…...

网站建设源代码交付/安徽网络seo

转载请标明出处&#xff1a;http://blog.csdn.net/xx326664162/article/details/50599911 文章出自&#xff1a;薛瑄的博客 你也可以查看我的其他同类文章&#xff0c;也会让你有一定的收货&#xff01; 一、系统分区 # adb shell # mount rootfs / rootfs ro 0 0 tmpfs /d…...