Sqoop实战-- Sqoop的Job任务、增量导入、数据格式转换与Lombok的使用指南

news2024/10/1 14:33:03

        数据传输是任何数据驱动型组织的关键时刻。Apache Sqoop 在促进关系型数据库和Hadoop之间的高效数据传输方面表现出色,使其成为大数据工作流程中不可或缺的工具。本文将详细介绍如何使用Sqoop执行Job任务以及进行增量导入,如何在HDFS上指定数据存储格式,以及如何利用Lombok简化Java实体类的编写。

一、Sqoop的Job任务

1.1、Job任务的好处

  1. 简化操作:可以将常用的导入导出脚本保存为Job任务,简化操作步骤。
  2. 记录last-value:帮助记录增量导入的last-value,方便后续操作。

job命令中有哪些参数:

参数说明
--create创建一个新的保存的任务
--delete删除一个已保存的任务
--exec执行一个已保存的任务
--help打印使用说明
--list列出所有已保存的任务
--meta-connect指定元数据存储的JDBC连接字符串
--show显示一个已保存的任务的参数
--verbose在执行时打印更多的信息

1.2、创建Job任务

创建Job

sqoop job --create jjoobb -- import  --connect jdbc:mysql://bigdata01:3306/sqoop \
--username root \
--password 123456 \
--table user \
--delete-target-dir \
--target-dir '/sqoopdata/user' \
-m 1

 如果出现上面的关于Json的错误,请进行如下修复:

1)在sqoop/lib 下,拷贝一个 java-json的jar包:

2) sqoop-env.sh 中 添加 export HCAT_HOME=/opt/installs/hive/hcatalog

3)删除 sqoop中的lib中 hive-exec-3.1.2.jar 这个jar包(可选,我们以前就没有拷贝)。

以上操作完成后,继续创建job任务,如果创建好了之后,就可以执行了

sqoop job --exec jjoobb

要输入mysql的密码。

sqoop job --create  jod的名字
sqoop job --list
sqoop job --delete job的名字
sqoop job --exec job的名字

二、Sqoop的增量导入

2.1、 创建增量导入Job任务

Sqoop是一个用于在Hadoop和关系型数据库之间高效传输数据的工具。增量导入是Sqoop的一个常用功能,它允许我们只导入自上次导入后发生变化的数据。以下是创建一个增量导入Job任务的示例:

Last-Value方法:利用Sqoop的last-value特性,只导入记录中值高于上次导入记录的记录。

sqoop job --create auto_import \
-- import --connect jdbc:mysql://bigdata01:3306/sqoop \
--username root \
--password 123456 \
--table sales_order \
--driver com.mysql.cj.jdbc.Driver \
--target-dir /home/sales_order/dt=20240903 \
--split-by orderId \
-m 1 \
--check-column orderId \
--incremental append \
--last-value 0 \
--fields-terminated-by '\t'
2.2、 执行Job任务

一旦Job任务创建完成,我们可以通过以下命令执行它:

sqoop job --exec auto_import
2.3、增量导入效果

在数据库中新增数据后,再次执行Job任务,增量导入的效果将体现在HDFS上。

三、指定HDFS上的数据存储格式

3.1、导入数据为Parquet格式

使用Sqoop导入数据时,我们可以指定在HDFS上存储的格式。以下是将MySQL数据导入为Parquet格式的示例:

sqoop import --connect jdbc:mysql://bigdata01:3306/sqoop \
--username root \
--password 123456 \
--table user \
--delete-target-dir \
--target-dir '/sqoopdata/user2' \
-m 1 \
--fields-terminated-by '\t' \
--null-string '\\N' \
--null-non-string '0' \
--as-parquetfile

3.2、处理MySQL中的null值

对于string类型的null值,导出时使用\N表示;对于数值类型的null值,则导入为0。

--null-string '\\N' \
--null-non-string '0' \

 -as-parquetfile    将mysql数据导出到hdfs的时候,是parquet类型的

假如在hdfs上有一个文件,创建一个hive表,指定这个表的数据的位置就是这个文件所在的位置。hive中有数据

 现在创建一个表,字段跟数据的文件字段数量和类型都一样,最重要的是数据类型和存储位置一定要要分析的文件一样。

create external table users(
id int,
age int
)
row format delimited
fields terminated by '\t'
stored as parquet
location '/sqoopdata/user2'

补充一个UUID:

package com.bigdata;

import java.util.UUID;

public class UUIDDemo {
    /**
     *  UUID 经常用于给图片或者文件起别名的时候
     * @param args
     */
    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            // d8bfa531-80d9-441e-a9bc-6b18d962570b  36位的随机字符串,其中有4个-  UUID,全球唯一
            UUID uuid = UUID.randomUUID();
            String str = uuid.toString();
            System.out.println(str.replaceAll("-",""));
        }

    }
}

四、Lombok使用指南

4.1、 安装Lombok插件

首先,需要在IDE中安装Lombok插件。

4.2、导入Lombok包

在项目中导入Lombok包:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
</dependency>

4.3、使用Lombok简化实体类

Lombok可以帮助我们快速实现实体类的set、get方法、toString方法、无参构造方法等。以下是使用Lombok的示例:

package com.bigdata;

import lombok.*;

@Data // 一个顶 @Setter @Getter @ToString @EqualsAndHashCode
public class Student {
    private String name;
    private int age;
}

五、实战:使用Lombok创建Student类

以下是使用Lombok创建Student类的完整代码:

package com.bigdata;

import lombok.*;

@NoArgsConstructor
@AllArgsConstructor
@Data
public class Student {
    private String name;
    private int age;
}

package com.bigdata;

public class TestStudent {

    public static void main(String[] args) {
        Student student = new Student();
        student.setName("zhangsan");
        student.setAge(20);

        System.out.println(student.getName());

        Student student2 = new Student("lisi",20);
        System.out.println(student2.toString());
    }
}

六、结论

        掌握Apache Sqoop能够使数据工程师和分析师有效地管理关系型数据库和大数据平台之间的数据传输。它支持增量导入、数据导出和作业管理,使其成为ETL流程中的全面工具。本文详细介绍了Sqoop增量导入、数据格式转换、Lombok的使用。这些技术在大数据处理和Java开发中都非常实用。

 视频链接

18-sqoop介绍_哔哩哔哩_bilibili

19-sqoop的安装_哔哩哔哩_bilibili

20-sqoop的前两个命令_哔哩哔哩_bilibili

21-sqoop导出emp表_哔哩哔哩_bilibili

22-mysql导入hdfs的一些常见参数的使用_哔哩哔哩_bilibili

23-mysql数据导入hive_哔哩哔哩_bilibili

24-分享一个不常见的错误_哔哩哔哩_bilibili

25-sqoop实现增量导入_哔哩哔哩_bilibili

26-sqoop的export操作_哔哩哔哩_bilibili

27-sqoop中的job_哔哩哔哩_bilibili

28-sqoop中的其他补充内容_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2182532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

031集——文本文件按空格分行——C#学习笔记

如下图&#xff0c;读取每行文本&#xff0c;每行文本再按空格分开读取一个字符串&#xff0c;输出到另一个文本&#xff1a; CAD环境下&#xff0c;代码如下&#xff1a; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using System; using Sys…

如何使用ssm实现白云会议管理系统+vue

TOC ssm741白云会议管理系统vue 第1章 绪论 1.1 选题动因 到现在为止&#xff0c;互联网已经进入了千家万户&#xff0c;最普通的平民百姓也有属于自己的智能设备&#xff0c;计算机各种技术的储备也是相当的丰富&#xff0c;并且实现也是没有难度&#xff0c;各行各业&…

Gpt4.0最新保姆级教程开通升级

如何使用 WildCard 服务注册 Claude3 随着 Claude3 的震撼发布&#xff0c;最强 AI 模型的桂冠已不再由 GPT-4 独揽。Claude3 推出了三个备受瞩目的模型&#xff1a;Claude 3 Haiku、Claude 3 Sonnet 以及 Claude 3 Opus&#xff0c;每个模型都展现了卓越的性能与特色。其中&a…

【Python报错已解决】TypeError: an integer is required (got type bytes)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

无人机培训机构配套教学无人机技术详解

无人机培训机构配套的教学无人机技术&#xff0c;是一个涉及多学科交叉、技术密集型的领域。以下是对该技术的详细解析&#xff1a; 一、无人机技术概述 无人机技术是一个涵盖航空工程、电子工程、计算机科学、材料科学和人工智能等多个学科的综合性领域。其核心在于实现无人…

LP3718BSL封装SOP8/12W隔离开关电源芯片

概述: LP3718BSL 是一款高度集成的隔离型适配器和充电器的自供电PSR控制芯片&#xff0c;外围设计极其简单。 LP3718BSL通过外置电阻&#xff0c;可调原边峰值电流&#xff0c;再 通过变压器原副边匝比来设置输出恒流点&#xff1b;通过设 定 FB 上偏电阻和下偏电阻来设置输出恒…

【MySQL】数据库的介绍以及数据库基础

目录 &#x1f333;介绍 &#x1f384;数据库操作 &#x1f6a9;显示当前数据库 &#x1f6a9;创建数据库 ​编辑&#x1f6a9;使用/选中 数据库 &#x1f6a9;删除数据库 &#x1f334;常用的数据类型 &#x1f6a9;数值类型 &#x1f6a9;字符串类型 &#x1f6a9…

Java项目实战II基于Java+Spring Boot+MySQL的大创管理系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者 一、前言 在当前创新创业氛围浓厚的背景下&#xff0c;大学生创新创业项目&#xff08;简称“大创”&#xff0…

足球青训俱乐部后台:Spring Boot开发策略

4 系统设计 4.1 系统架构设计 B/S系统架构是本系统开发采用的结构模式&#xff0c;使用B/S模式开发程序以及程序后期维护层面需要的经济成本是很低的&#xff0c;用户能够承担得起。使用这样的模式开发&#xff0c;用户使用起来舒心愉悦&#xff0c;不会觉得别扭&#xff0c;操…

51单片机的智能垃圾桶【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块超声波传感器红外传感器步进电机按键、蜂鸣器、LED等模块构成。适用于智能自动感应垃圾桶、超声波智能垃圾桶等相似项目。 可实现基本功能: 1、LCD1602实时显示桶内垃圾高度 2、超声波传感器采集桶顶到垃圾的距离…

Docker学习和部署ry项目

文章目录 停止Docker重启设置开机自启执行docker ps命令&#xff0c;如果不报错&#xff0c;说明安装启动成功2.然后查看数据卷结果3.查看数据卷详情结果4.查看/var/lib/docker/volumes/html/_data目录可以看到与nginx的html目录内容一样&#xff0c;结果如下&#xff1a;5.进入…

海康ARM64平台网络SDK问题分析,大公司也犯这种低级错误

家里有个海康的网络摄像机&#xff0c;虽然有手机app可以远程访问&#xff0c;但是不方便定制。了解到海康提供有网络sdk,&#xff0c;接口功能丰富且强大。正好手边有全志的okt507开发板闲置&#xff0c;周末可以搞些事情玩。但是竟发现海康提供的arm64平台下的sdk有这等问题&…

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(2)Keras

文章目录 前言一、Keras二、使用Kears 估计回归问题的神经网络1. 载入、处理数据2. 数据预处理&#xff1a;归一化3. 设定一系列随机数种子4. 定义了一个简单的深度神经网络5. 训练模型6. 查看训练结果7. 使用最优轮数&#xff08;index1&#xff09;重新估计 此神经网络模型8.…

Redis篇(应用案例 - UV统计)(持续更新迭代)

目录 一、HyperLogLog 二、测试百万数据的统计 一、HyperLogLog 首先我们搞懂两个概念&#xff1a; UV&#xff1a;全称Unique Visitor&#xff0c;也叫独立访客量&#xff0c;是指通过互联网访问、浏览这个网页的自然人。 1天内同一个用户多次访问该网站&#xff0c;只记录…

HarmonyOS Next应用开发——响应式布局之媒体查询

响应式布局之媒体查询 媒体查询作为响应式设计的核心&#xff0c;在移动设备上应用十分广泛。媒体查询可根据不同设备类型或同设备不同状态修改应用的样式&#xff0c;常用于多屏幕的应用适配。媒体查询常用于下面两种场景&#xff1a; 针对设备和应用的属性信息&#xff08;…

Markdown笔记管理工具Haptic

什么是 Haptic &#xff1f; Haptic 是一个新的本地优先、注重隐私的开源 Markdown 笔记管理工具。它简约、轻量、高效&#xff0c;旨在提供您所需的一切&#xff0c;而不包含多余的功能。 目前官方提供了 docker 和 Mac 客户端。 Haptic 仍在积极开发中。以下是未来计划的一些…

fastAPI教程:jinja2模板

FastAPI 五、jinja2模板 jinja是python知名web框架Flask的作者开发的⼀个开源的模板系统&#xff0c;起初是仿django模板的⼀个模板引擎DjangoTPL&#xff0c;为Flask提供模板支持&#xff0c;由于其灵活&#xff0c;快速和安全等优点被⼴泛使用。 jinja2是jinja2这个模块的…

025.Oracle_DBMS_job定时任务

课 程 推 荐我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448;入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448;虚 拟 环 境 搭 建 &#xff1a;&#x1…

无人机之编队控制篇

无人机编队控制是指无人机集群在执行任务过程中&#xff0c;如何形成并保持一定的几何构型&#xff0c;以适应平台性能、战场环境、战术任务等要求的控制技术。以下是对无人机编队控制的详细解析&#xff1a; 一、无人机编队控制的主要任务 无人机编队控制主要解决两个问题&a…

剪刀面的做法

1 面和水称重准备好&#xff0c;鸡蛋敲孔流入面粉中两个蛋清。 2 边下水边和面&#xff0c;每次下水不要太多&#xff0c;这是和硬面要注意的&#xff0c;下水多&#xff0c;水用完了&#xff0c;面还没和起来&#xff0c;一边揉面一边搓面盆周围&#xff0c;这样可以使盆光&a…