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

Sqoop其二,Job任务、增量导入、Hdfs导入、龙目

目录

一、Sqoop中的Job任务

二、使用Job任务实现增量导入

三、从mysql导入hdfs的时候可以指定在hdfs上存储格式

四、Lombok(龙目)


一、Sqoop中的Job任务

创建job任务好处:
1、可以将经常使用的导入导出脚本,编写为job任务,每次执行一下命令即可
2、可以帮助我们记录last-value,从而更好的利用last-value进行增量导入

job命令中有哪些参数:

usage: sqoop job [GENERIC-ARGS] [JOB-ARGS] [-- [<tool-name>] [TOOL-ARGS]]

Job management arguments:
   --create <job-id>            Create a new saved job
   --delete <job-id>            Delete a saved job
   --exec <job-id>              Run a saved job
   --help                       Print usage instructions
   --list                       List saved jobs
   --meta-connect <jdbc-uri>    Specify JDBC connect string for the
                                metastore
   --show <job-id>              Show the parameters for a saved job
   --verbose                    Print more information while working

创建一个job任务:

历史上有一个公司,叫做lloogg
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的名字

二、使用Job任务实现增量导入

通过昨天的last-value的增量导入代码,实现一个job任务:

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'

执行该脚本:

sqoop job --exec auto_import

在数据库中新增两条数据,再次执行这个任务,就能看到增量导入的效果。

三、从mysql导入hdfs的时候可以指定在hdfs上存储格式

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
--null-string '\\N' \
--null-non-string '0' \

假如我们的mysql中的数据有null值如何处理?
就看有null值的字段是什么类型的,如果是string类型,就导出成 \N
如果是数值类型的,就导入变为 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(龙目)

1、需要安装插件 idea

2、在项目中导入包

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

3、使用

可以帮助我们快速实现一个实体的,set get 方法,toString 方法,无参构造方法,没有构造方法等

什么是实体:一个类,只有属性和set、get方法,这个类就称之为实体。

一般有这些名字:entry、javabean、pojo

4、实战

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());
    }
}


http://www.kler.cn/a/468224.html

相关文章:

  • 分布式多机多卡训练全景指南:MPI、DeepSpeed 与 Colossal-AI 深度解析
  • 5. CSS引入方式
  • 基于物联网的冻保鲜运输智能控制系统
  • Spring MVC实战指南:构建高效Web应用的架构与技巧(三)
  • element-plus大版本一样,但是小版本不一样导致页面出bug
  • 美的空气净化器好用吗?拾梧、美的、戴森空气净化器除烟哪个好?
  • 【Unity3D】遮挡剔除 Occlusion
  • linux安装redis及Python操作redis
  • 嵌入式linux系统中CMake的基本用法
  • C# OpenCV机器视觉:霍夫变换
  • 社群团购平台的运营模式革新:以开源AI智能名片链动2+1模式商城小程序为例
  • HTML——74. 表单实战
  • 算法练习——分治_快排
  • 在k8s中部署Elasticsearch高可用集群详细教程
  • 《塑战核心》V1.0.0.9952官方中文版
  • Linux -前端需要了解的Linux 常见命令
  • ROS2 中的工作空间和功能包
  • Spring Cloud Gateway-自定义异常处理
  • 配置QoS
  • 发现API安全风险,F5随时随地保障应用和API安全
  • 【电机控制】低通滤波器及系数配置
  • 【微服务】1、引入;注册中心;OpenFeign
  • 数据中台与数据治理服务方案[50页PPT]
  • 【数据结构-堆】力扣2530. 执行 K 次操作后的最大分数
  • Ungoogled Chromium127 编译指南 MacOS 篇(二)- 项目要求
  • 查找项目的classes目录路径要使用“classpath:“类路径前缀