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());
    }
}
相关推荐
好大哥呀4 小时前
Hadoop yarn
大数据·hadoop·分布式
红队it4 小时前
【数据分析】基于Spark链家网租房数据分析可视化大屏(完整系统源码+数据库+开发笔记+详细部署教程+虚拟机分布式启动教程)✅
java·数据库·hadoop·分布式·python·数据分析·spark
本旺1 天前
【数据开发离谱场景记录】Hive + ES 复杂查询场景处理
hive·hadoop·elasticsearch
无泪无花月隐星沉1 天前
uos server 1070e部署Hadoop
大数据·运维·服务器·hadoop·分布式·uos·国产化os
悟能不能悟2 天前
springboot全局异常
大数据·hive·spring boot
是阿威啊2 天前
【第一站】本地虚拟机部署Hadoop分布式集群
大数据·linux·hadoop·分布式
lightningyang2 天前
Hadoop 分布式集群配置(OpenEuler 1主2)
hadoop·openeuler·天枢一体化虚拟仿真靶场平台
是阿威啊2 天前
【第六站】测试本地项目连接虚拟机上的大数据集群
大数据·linux·hive·hadoop·spark·yarn
青木川崎2 天前
hive实战
数据仓库·hive·hadoop
是阿威啊2 天前
【第五站】集群组件一键启动/关闭脚本(Hadoop/YARN + Hive + Spark)
linux·运维·hive·hadoop·spark