2022黑马数据湖架构开发Hudi

2022黑马数据湖架构开发Hudi

基础入门篇 1

课程内容大纲和学习目标

1

1

为什么要学习Apache Hudi

什么是数据湖DataLake

数据仓库和数据湖区别

三大流式数据湖框架

Hudi 框架基本介绍

Hudi 快速发展

Hudi 快速体验使用

编译Hudi 源码

1
他这种编译方式,hudi0.9 如果自己使用的hadoop3系列会出问题,编译就通不过。不过他这里是先安装的hudi,其它的还没安装,所以不会使用到已有的一些依赖。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
OK,接下来呢,我们来看第二部分就是hudi呢,快速的一个体验使用,那说白了我们就是让hudi帮我们管理数据啊,哎,我们看一下怎么去用互理。那我们分为下面5个部分去讲,首先我们思考一个问题,在前面我们讲过,hudi,它是一个数据湖的框架,它就是管理数据的,它不存储数据,也不呢进行分析数据,那他既然不存储数据的话呢,那我们的数据,它管理的数据,我们需要有个地方怎么样进行存储。那在这里面呢,我们就使用我们讲的最典型的一个文件系统,就是HDFS。那所以说我们当hudi管理数据以后,我们需要去分析它的管理的数据,我们就需要计算引擎,比如我们把数据写到hudi表中去,以及从hudi表中呢加载数据进行分析,这时候呢,我们可以用我们讲的Spark和flink。

此外我们在使用hudi的话呢,是比较简单的,它使用Java语言编写这个框架,我们需要呢,诶直接使用hudi与我们的存储引擎或者分析引擎呢,集成的jar包就可以了,我们把架包呢放在这个软件的class pass目录下面,我们就可以进行使用了,那在这里面我们为了获取jar包,我们需要做这件事情就是编译我们的护理。

好,首先我们讲第一块,在使用之前,我们需要编译hudi源码。那那编译hudi源码呢,首先我们需要去下载一下我们的hudi理,OK,那我们先看一下啊好,那我们说啊hudi它的源码的一个编译,那首先啊第一步,我们说首先第一步干什么呢?我们要去下载hudi什么呢源码,那我们这这里呢,我们本次课用的是我们讲的这一个。0.90版本的,那在这里我给大家已经下载好了,在这这是我们hudi的源码,下载下来以后,大家可以看到特别特别的小啊。第二步我们怎么样呢?我们要去编译我们的这个hudi源码,那编译的话呢,我们讲过它是用java语言写的,所以我们首先啊,我们第一步我们首先干什么呢?我们要去安装一下我们的Maven对不对,使用maven配置安装,紧接着我们去配置一下我们这些进镜像源,镜像源也就是说我们在进行编译的时候,它需要下载一些jar包镜像源,我们配置什么呢?一些国内的镜像源。好,那这样的话呢,然后我们执行什么呢?这个编译的一个命令,那最后呢,我们来进行测试,测试好,这是我们讲整个hudi源码的编译一个过程。

好了,首先我们在我们的CentOS7.47六十四位操作系统上呢,我们要去下载安装和memory,那这个呢,其实我在这里给给大家提供了这么一个虚拟机,虚拟机里面以后呢,已经安装好了,那我们打开看一下这个虚拟机。好,这个虚拟机我们看一下啊,已经安装好了啊,我们的软件安装在export啊,这个sva目录下面,去sva来打下下,这上面我已经安装了,我们所关心的,比如说我们所讲的这一个叫做me,对吧?安装me肯定要安装什么JDK已经安装好了啊,Maven是3.5.4版本的,好了,我们看一下我们的这个Java的版本,Java是1.8的241这个更新版本,那ma呢,咱们也装好了啊,买本咱们也可以答一下啊。Me呢是3.5.4好,这样的话呢,我们安装好以后呢,我们就可以去用它了,OK,这是第一步,好那配置完me环境以后呢,我们需要执行memory这个命令,好没有问题。

好,安装以后我们去下载我们的hudi啊,我们下载是0.9啊,,在我们的hudi这个软件包下面啊,其实你打开官网下面它有个说明,就是我们怎么去编译护理源码,这里讲的很清楚,他说编译护底的源码怎么编译,首先我们需要在Linux系统上面去编译,其次你用的Java最好是JAVA8,紧接着你用git去获取源码,用maven编译,那大家看这个编译呢,它给了一个非常简单的命令,叫mvn clean install -DskipTests -DskipITs -Dscala-2.12 -Dspark3,这个命令去编译特别简单啊

那但是呢,我们稍微要配置一下,第三步我们说了,我们编译的时候呢,需要下载一些依赖包,我们需要在maven当中呢,添加一些镜像源。这样方便我们去下载依赖的包,那怎么去修改特别简单啊,同学们,在我们Maven的这个conf目录下面有个setting文件添加一些,我们这里给了8个镜像源,好给完以后镜像源以后呢,我们就可以去做了,那在这里面我们打开看一下啊,我们使用一个node pad++加工具。啊,我们来远程链接,远程链接啊。

大家在编的时候呢,最好加上。那做完以后,那第三第4步我们怎么样呢?把我们的这个hudi源码上传到我们这个系统,然后呢,解压tar包,然后执行编译好,那同学们我们来操作一下,其实这里面有一个read me,大家可以去看啊。好,接下来呢,我们执行这个编译的命令,那其实就是我们这句话啊

呃,由于我们这里用的是Spark3那并且我们用的scala是2.12呀,所以我们需要指定一下啊,那咱们执行这个命令编译就可以了

好,那编译完成以后呢,我们就可以进入到hudi的目录,下面有个包叫hudi-cli目录,这是hudi框架给我们提供了一个命令行来帮我们协助管理hudi中的数据的,那我们去运行执行这个hudi-cli脚本,如果可以成功运行,就表示我们编译什么呢?成功了。

那在我这边呢,给大家提供了一个我编译好的啊,这个叫做hudi-0.9.0.src.tgz。这编译完以后呢,大概是1.57g,大家直接解压就好了,那我们看一下这边呢,我就解压出来了啊,那编译完以后呢,我们看一下同学们,这里面有一个命包叫蝴climb,那我们先进入这个模向区对不对?好,进入完以后呢,我们去执行,这里面有个命令叫hudi-cli。我们说如果能够执行成功,不报错,是不是表示我们没有问题啊?好,这是我们所讲的同学们啊。那接下来我们来看一下,到这里面我们执行一个叫version,哎,我们查看一下呢,它的版本好,那这样的话呢,我们整个就成功了

那在这里面稍微再给大家讲一下啊,在我们编译完以后,大家可以看到这里面有很多很多的这个,比如说hudi与flink,Spark-datasource集成的jar包以及hudi与hadoop-mapreduce集成jar包等等等等,特别多。

好在这里面有一个很重要的一个目录,叫packaging这个目录就是这个包下面,其实就是我们hudi与各个框架集成一些jar包都在这里面,比如说我们hudi与Spark的jar在这里面,进入这里面有一个target,那其实我们要用的话呢,就是hudi与spark jar包在这,我们直接用就可以了,那包括与flink架包在这,包括与hive与mapreduce都在这里,这一点大家知道一下。完了,那至此呢,我们整个编译呢,就给大家讲完了,那有了编译完以后,有了jar以后,我们就可以来使用hudi了,怎么使用我们说过了,我们要安装hadoop。是不是用HDFS文件系统来存数据啊?我们要安装Spark,我们用Spark来操作湖里表的数据进行存储和查询。OK.

大数据环境准备概述

1
2
3
4
5
6
7
前面呢,我们把hudi编译好了,接下来我们要使用hudi,那使用的话呢,我们得明确一件事情,我们说hudi呢,它是一个数据弧的一个框架,它是管理数据不存储以及不处理数据,那这时候呢,我们需要做两个东西准备两个东西,第一个。hudi管理的数据,我们给它存到哪里去呢?在这里面我们选择了HDFS分布式文件系统,我们把它存到HDFS文件系统上去,那这里呢,我们就需要去安装一个HDFS文件系统,比说白了就是hadoop,在这里面我们使用的是hadoop3,我们也需要简单的安装一下。

其次,我们怎么把数据写到hudi呢?以及我们怎么对呼体表的数据进行一个更新、删除和从hudi表查询数据呢?这里面我们使用Spark这么分布式内存计算引擎来进行操作数据。好了,接下来呢,我们就需要做这种准备工作了。啊,我们记一下啊,啊,其实就是hudi使用的一个环境的准备,那首先我们第一个啊,第一点我们需要去安装HDFS分布式文件系统。文件系统主要干什么呢?存储我们护理表的数据对不对?

好,那第二点我们需要去安装,安装我们的Spark,这是什么呢?分布式的计算引擎,哎,我们呢,哎使用,哎使用我们的这一个Spark来什么呢?来操作我们hudi表数据,其实主要的操作其实就是我们讲的CRUD对数据的增删改查,那在这里面我们HDFS呢,我们安装的是hadoop的3.0版本。

我们Spark呢,我们用的是3.0的这个版本。OK,那这里面我们要知道啊,呃,除了之外呢,我们还需要去安装一个东西,我们要去安装一个scala语言。啊,因为我们会通过Spark中呢,Spark需要命令行来进行测试演示啊,所以说我们需要安装,那这里面我们安装的是2.12.10版本。好,这是我们环境的一个安装

HDFS 安装部署测试

image-20240313165248555

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(坑壁这里hadoop用的2.7.3,hadoop默认支持的2点几的版本,hive也是2.几)
那上传以后呢,我们进行解压啊,直接解压就可以了,同学们直接解压,解压以后我们创建一个软链接,方便后续版本升级和管理。这边创建好以后呢,我们首先给他一个执行的一个权限,好吧,直接权限chmod u+x hadoo....tar.gz啊好呃这样,然后然后呢,我们来解压完成以后,我们创建软链接ln -s had.. hadoop

那这时候呢,我们需要进行一些简单的配置,首先呢,我们说了啊,我们需要配置一个环境变量,方便我们启动这个服务。在系统的/etc/profile这个文件中呢,添加这几个配置就可以了。保存退出source一下

做完以后紧接着我们第三步,hadoop-env里面需要加上我们。加java home和hadoop_home安装目录

core-site,我们需要添加我们HDFS访问的地址,以及数据的临时存储目录,以及我们的权限。

HDFS-site插面文件里面有些配置,我们先看一下,第一个表示我们namenode的数据的存储路径,第二个就是我们datanode实际路据存储路径,第三个因为我们是单机版的,我们要告知我们这个存在HDFS上的数据的副本是一个,以及我们把权限给它关掉,以及权限变成750。OK

slaves,好,我们改成我们的主机名


格式化

image-20240313165358229

image-20240313165618237

Spark安装部署测试

1
2
3
4
5
6
7
8
9
10
11
12
前面呢,我们安装好了HDFS互地表的数据有存储的地方了,接下来呢,我们安装一个Spark。那我们要对hudi表的数据进行操作好,那这个安装也是比较简单的,咱们的Spark呢,我们就运行在本地模式就可以了,我们也不运行在这个什么yarn集群上面了。
上传
给个执行权限啊
解压
创建软链接

进行配置
安装scala
第二步 spark-env.sh javahome scalahome hadoop_conf_dir

配置完成以后,启动spark-shell
我们采用本地模式,spark-shell --master local[2]

启动spark-shell添加jar包

1
他这里--packages下载到本地的其实有3个jar包,所以下面jars指定了3个

image-20240313172416486

image-20240313172854869

1
2
3
4
5
前面呢,我们把HDFS和Spark都安装测试完成了,接下来呢,我们要进行操作了。我们用Spark来操作我们hudi表的数据,那在这里面呢,我们首先用Spark提供的这个Spark shell命令行我们来进行操作。那我们看我们的需求。哎,我们首先以本地模式去启动Spark-shell命令行,在这里面呢,我们直接调用Spark官方给我们提供的这个工具类,模拟产生我们乘车的交易数据。啊,我们封装成dataframe.那然后呢,我们把data frame呢,给它保存到我们hudi表中去。最后呢,我们从hudi表中呢进行查询来读取数据。好,那这时候我们可以看到我们的护理的数据最终是放在HDFS系统上的。

那接下来我们来看一下我们在启动Spark需要命令行的时候呢,诶我们要注意我们需要添加什么呢?hudi与Spark的整合,那在这里面我们来看一下,我们有两种方式可以操作,第一种方式,我们在启动spark命令行的时候,通过--packages。就是指定包,我们需要运行需要哪些依赖架包这种方式就是通过这种方式指定我们这个依赖包的

那按照我们上面这个--package这个方式呢,去添加包的话呢,怎么样呢,我们需要联网。它是基于IVY下载呢,相关jar包到本地的,到本地哪个目录呢?在用户的主目录下面有个jars目录,然后呢,把它添加到classpath这种方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
那第二种方式呢,其实我们可以把上面的3个jar包呢,给它下载下来

那我们要用的时候呢。我们启动Spark的时候呢,也比较简单,怎么启动呢?通过--jars来显示的,指定我们Spark与护底的集成包,以及依赖包所在的路径,我们就可以直接去用了。

好,这是我们讲两种方式,接下来呢,我们采用这个第二种方式,我们来进行启动,我们把这个包已经下载下来了

好,怎么样写回车?好,这边呢,我们给它重新启动,那这时候启动呢,就会把我们这个三个与hudi集成的包,以及相关的包呢,都放在classpath上面去,我们就可以了。啊,这是比较最简单的一种方式啊。那启动完命令以后呢,我们就可以编写scala语言的代码啦。从我们的把数据保存到hudi表,以及从hudi表怎么样呢来加载数据。

OK.好,我们先看一下同学们,那这时候就可以了,我们打开我们这个监控页面,我们说每个spark应用启动呢,都有一个监控页面。那在这里面我们看一下,这里面有一个环境environment,在这里同学们可以看到这几个jar包其实已经加载上去了,对吧,如果有异常的话呢,就是价包呢,是加载不成功的啊,我们可以看到这个价包呢全部加载了

OK,那接下来呢,我们就可以模拟产生我们的数据了。然后呢,保存到hudi表中去,以及从hudi表中什么呢读数据

当我们数据保存时候,我们怎么去保存呢?可以注意,我们用于Spark集成,直接用Spark sql中的这个外部数据源的方式,我们叫data source数据源的方式来保存数据到我们这个hudi表中。保存成功以后呢,我们是不是要读取啊
好,那大家可以明显感觉到啊,hudi就是一个管理数据的,它不分析数据也不什么呢,存储数据,它仅仅是帮助我们这些存储引擎怎么样呢,更好的管理数据的。那针对于我们HDFS来说,小文件对不对?它可以合并小文件,可以对数据进行一个插入更新,可以进行流式的读写。OK,好,接下来呢,我们就按照这个图的思路,我们来去完成。

image-20240329092543907

image-20240313174358367

基于IDEA编程使用Hudi

构建Maven模块环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
那我们在Spark消命令行呢,带大家呢去体验一下hudi啊,那其实就是帮助我们去管理数据,对吧?我们通过Spark把数据写到hudi表中去,以及呢,通过Spark从hudi表读数据,好那接下来呢,我们在我们的idea。这个开发工具当中呢,我们来进行编程开发啊,那我们呢,不仅是保存数据,查询数据,那我们还干嘛呢,去更新删除以及增量查询数据,让大家呢来体验一下,OK,那接下来呢,我们首先我们做第一个概念,我们要去创建一个maven工程。groupid cn.itcast.hudi
artifactid hudi-learning version 1.0.0 projectname hudi-learning

好在这里面我说了,我们后面有很多很多要创建不同的模块,好,那等一下我们在创建模块,我们把src呢,给它删掉。好了,那接下来呢,我们来创建我们的第一个maven模块hudi-start。然后呢,弄完以后,我们在hudi-start的pom这里面添加什么呢?相关的这个依赖
<repositories>
<repository>
<id>aliyun</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
<repository>
<id>jboss</id>
<url>http://repository.jboss.com/nexus/content/groups/public</url>
</repository>
</repositories>

<properties>
<scala.version>2.12.10</scala.version>
<scala.binary.version>2.12</scala.binary.version>
<spark.version>3.2.2</spark.version>
<hadoop.version>3.2.0</hadoop.version>
<hudi.version>0.12.0</hudi.version>
</properties>

<dependencies>
<!-- 依赖Scala语言 -->
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<!-- Spark Core 依赖 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<!-- Spark SQL 依赖 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_${scala.binary.version}</artifactId>
<version>${spark.version}</version>
</dependency>

<!-- Hadoop Client 依赖 -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>

<!-- hudi-spark3 -->
<dependency>
<groupId>org.apache.hudi</groupId>
<artifactId>hudi-spark3.2-bundle_2.12-0.12.0</artifactId>
<version>${hudi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-avro_2.12</artifactId>
<version>${spark.version}</version>
</dependency>

</dependencies>

<build>
<outputDirectory>target/classes</outputDirectory>
<testOutputDirectory>target/test-classes</testOutputDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
<!-- Maven 编译的插件 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>


这依赖呢,呃,在这里面其实有现成的啊,在这个文档中已经给大家了,给大家了,我们直接把这个全部添上去就可以了。好,在下面我们来创建一下一些东西啊,同学们,我们做一个转变工作,我们使用的是scala写,所以我把这Java改成scala,我们不用Java语言去写。好,下面这个test里的java改一下啊。呃,都改一下。好,并且呢,我们创建一个测试的资源目录resources,然后在这边呢,我们mark as test resource 。好了,我们看下这个依赖,点maven里的dependency下pom里的6个依赖都有


好,这样的话呢,我们整个工程创建好了,那在这里面呢,我们为了后续方便呢,我们再配置一下这个远程主机,这里面有一个tool有个部署deployment remote host,有个远程主机就链接我们的虚拟机就可以了啊,那这样的话呢,我们上传下载东西比较方便选择SFTP


image-20240319005417845

1
2
3
那在这里呢,同学们就可以看到一个最基本的一个现象了,那这样的话就很简单了啊,因为那我们要做一些事情,我们是把数据存到我们的hudi表,hudi的数据呢,最终存在hdfs所以这里面我们需要把我们这个HDFS的一个配置文件,一个叫做core-site.xml,一个叫做hdfs-site.xml呢,给它放到我们resource里面去(main里的resource),让它能够读取到啊。好,然后呢,还有这个文件读进去。好,此外呢,因为我们开发程序的时候呢,可能有很多日志,我们也需要做一些事情,把Spark的这个配置文件spark conf里的log4j也给他拖进来。

好,那此时呢,我们整个模块和工程的工作呢,就给大家准备好了,那接下来呢,我们就可以写代码了啊写代码了OK,好,那最好呢,我们在这里同学们干什么呢?我们写一个hello word程序来测试一下啊测试一下看有没有问题,有问题的话呢,我们整个工程创有没有问题,有问题咱们再处理。好,这是代码创建一个object对不对?好,我们说whodi start什么呢?APP test test,回车。好,在这里面我们写个慢方法。好慢方法,那方法里面我们写个hello程序啊,Print print.好叫hello,对吧。来,然后呢,我们右击运行我们的代码,看结果,同学们。啊,如果运行出来,表示我们整个工程和模块创建就没有问题了。好比较慢,因为第一次比较慢嘛,对不对。啊,这是我们所讲的啊,同学们,这是我们准备工作。OK,我们再等等吧。好了,同学们应该可以看到啊,这已经打印出hello word程序了,那接下来呢,我们就要去创建我们的这个包,我们要去写我们的代码了啊啊C id.whodi点于是什么集成啊,用我们的什么Spark啊,Spark集成。好,那接下来呢,我们看一下我们写代码的话呢,有这么几个步骤,我们先把这个对象创建出来,OK.Object好,那就叫做什么呢?Who Spark什么呢?DEMO?啊,护理18代码。好,在这里面我们来我们来写一下注释,同学们啊,那这是我们接下来写的。这干嘛呢?OK,就是我们忽的的一个数据弧框架啊,数据弧这么一个框架,基于我们的Spark计算引擎,对吧,我们对数据进行c rud的操作,我们使用啊,还是使用我们前面的官方啊,模拟生成什么数据集呢?出租车的出行数据,出租车的出行数据出数据啊。好在这里面呢,我们其实有好几个任务要做,等一下我们继续讲啊。好,那接下来呢,我们看一下我们有几个任务,同学们,我们有这么4个任务,第一个模拟数据,把数据插入到忽略表,我们的表的类型是cow类型。啊,写的时候呢,我们复制。第二个任务就是我们采用快照方式来查询,写我们的DL方式,第三种我们更新数据,第4个我们增量查询数据,我们写参考,最后呢,我们删除数据,这是我们5个需求,好5个任务,OK,那接下来呢,我们把它贴上去啊,这我们写代码对吧。好,我贴上去啊,那我们把这些东西诶,多余的给它清掉。好,那那在这里面呢,我们在工程中呢,创建包以后,创建这个对象以后呢,我们就要写卖方法,那办方法里面,我们对上面的每一个任务呢,我们都创建一个什么呢?创建一个方法进行操作,OK.好,那这样准备好以后呢,我们就可以写代码了啊同学们。OK,那在这里面我们首先呢,把一些基本环境给它写出来,我们肯定要去创建什么SPA进新对象是不是啊,模拟产生数据,然后怎么样进行对数据的增加改查,最后呢,关闭资源,OK,好,那我们先把我们的这一个诶Spark对象给串出来,好,首先我们写一下啊,创建一个Spark session的使命对象,我们要设置一些基本的什么呢?一些属性。啊,这个创新比较简单啊,那我们创建一下,哎,这是Spark station导播同学们好,我们采用代码块的方式来进行复制,好我们Spark对象创建呢,我们知道它是有一个叫什么建造者模式来构建的,点get a create.那在这里面我们来设置我们整个应用的一个名称,好,我们说this.get class.get simple name.strip surface,对不对,Service,好,我们去除一个什么呢符号。加上我们在本地测试的话呢,我们设置它运行的一个模式啊,模式的话呢,我们就是本地模式,本地模式啊,Local启动两个线程。那最后呢,我们要设置一个序列化啊,序列化序列化序列化这种方式为什么呢?K啊K啊方式来进行序列化。好,在这里面我们进行一个叫con,同学们我们写一下con FA,这是属性,这属性我们叫spark.sok,好,用我们去列化方式。Org点阿尔法she。这个咱们不用去考,不用去写啊,在顶前面其实咱们写过同学们。在哪呢?OK,我们看一下,在最前面我们写过了,在启动SPA个需要命令方式,大家看这是不是有个属性啊,就是个属性啊。哎,我们这是在代码中进行设置。好。这里面还有它的属性值,这种虚拟化的这个类。好,我们贴上去。那这样的话呢,我们整个Spark对象呢,咱们就创建成功了啊创建成功以后同学们注意最后一句话很关键,我们应用结束关闭资源对不对,应用结束啊应用结束怎么样呢?关闭资源,那其实就Spark点什么。Stop.好做完以后,紧接着呢,中间这一块呢,就是我们模拟数据啊,然后呢,对数据的进行增删改查操作。OK.

Apache Hudi 核心概念剖析

三大基本概念