00:00
好,上节提到我们的数仓采用的计算模式呢,是海王Spark啊,那所以说我们这儿需要去配置一个海王Spark的环境啊,在配这个环境之前啊,呃,这儿有一个问题需要先说明一下,什么问题呢?就是兼容性问题。啊,大家应该呃,听说过对吧,就是大数据这个生态当中的各个组件之间是很容易出现这个兼容性问题的啊,对吧?那大家有没有想过这个兼容性问题到底是如何出现的,那出现之后到底应该如何去解决啊?那现在呢,我们就以have one SPA这个环境为例,给大家去说明一下兼容性问题的这个根本原因以及解决方法啊好,那现在我们来看一个小例子。现在假如说我们集群当中所安装的have呢,是3.1.2版本的,OK,那集群当中所安装的Spark呢,是什么版本的呢?是三点诶0.0的这个Spark,大家想一想啊,我们要想配置have Spark环境,那你说我们在运行的时候,是不是肯定要加载集群当中这个Spark的相关依赖呀,对吧?这个肯定,这个是肯定的,那是这样的啊,然后呢,我们再继续往下思考,那假如说我们现在就是haveve的开发人员,那在我们去开发have的时候,呃,尤其是开发呃Spark引擎的相关模块的时候,是不是必须得引入Spark的依赖啊,对吧?那假如说我们在开发3.1.2的have的时候,引入的Spark的依赖是呃,2.3.0的版本。
01:32
啊,是2.3.0的版本啊,是这样的啊,然后呢,我们在开发3.1.2的时候呢,还引用了2.3.0的Spark当中的一些过时的API,什么叫过时API啊,所以过时API就是不推荐使用,在后续版本有可能会被删除的啊这样的一些API对吧?那现在我们假如说就引用了一些这样的过时API啊,那不巧的是在3.0的这个Spark当中啊,就把这些过时API给删除了。
02:01
那这个时候呢,可能就会出现我们刚刚所提到的兼容性问题了啊,你看是不是这么一回事啊来,那现在集训当中我们所安装的这个have,那就是3.1.2了啊,那Spark呢,就是3.0.0的啊,那3.0.0的Spark已经把2.3.0里边过时的那些API给删除了。啊,那这时候我们去启动have on Spark这个环境的时候,那haveve是不是需要加载s Spark依赖啊,对吧,那它加载的就是3.0的依赖啊,没错吧,那但是呢,他是不是就找不到那些他之前引用的过时的API了呀,那这时候呢,通常就会给我们报出来一个错误,什么错误啊,啊,就是说方法找不到啊,或者是某个某个类找不到这样的一些问题,那这个问题呢,其实就是所谓的兼容性问题。啊,大家可以想一想啊,你说这个兼容性问题,咱们怎么去解决呢。其实最直接的解决方案怎么办?呃,我们直接把集群当中的诶Spark版本给他替换一下,对吧,那咱们给他替换成2.3.0,那这样一来是不是就不会再出现这个找不到对应的方法的问题了,那兼容性问题就能解决。
03:08
这个应该是这么回事,对吧?啊啊,但是有些情况下呢,我们SPA的版本你可能不能随意的替换啊,可能我有些其他的组件,那恰好就需要用到SPA3.0。对不对啊,那所以说你这个也没没法替换,你把它替换了,这个地方又不满足了,对吧,那所以说有些情况下,咱们这个版本是替换不了的,那这个时候我们应该怎么去解决兼容性问题呢。啊,其实可以这样去做啊,那咱们现在呢,就需要把have3.1.2版本的源码下载下来,那下载下来之后呢,我们需要将啊这个3.1.2的have当中的Spark的依赖啊,它的版本升级到3.0.0。那升级上去,升级上去之后呢,那我们肯定需要重新编译源码,那编译源码的时候呢,肯定会报错,那我们要做的事呢,就是根据报错的提示。去修改相应的源码啊,哪里报错我们就改哪里啊,直到哎,我们编译不再报错为止啊,那这样一来的话呢,哎,我们编译得到的这个呃,Have的安装包,那就是什么呀,那就是兼容此SPA和3.0的安装包了啊那这个呢,就是我们解决各组件之间兼容性的一个呃方案,那就是诶替换依赖版本,然后呢,重新编译源码。
04:22
啊,是这样的啊好,那现在我们这个集群当中的环境啊,其实确实就存在一个这样的兼容性问题,那也就是说have3.1.2和Spark3.0点,那其实是有这个兼容性问题的,那具体怎么去解决这个问题呢?那就像我们刚才所说的那样,下载3.1.2的源码,修改Spark当中的呃,Spark这个版本啊,然后呢,重新编译源码啊,那这就是我们兼容性问题的一个说明。
我来说两句