00:00
呃,汉王SPA的配置呢,我们这儿呢,第一小节就是一个兼容性问题说明,对吧?啊,一个兼容性问题说明,呃,这个提到这个兼容性了啊,那首先我先问一下大家啊,咱们老说这个什么阿帕奇,这个海渡生态里边呢,可能会有各种各样的兼容性问题,对吧?啊,咱们老提这个事儿,大家到底清不清楚这个所谓的兼容性问题到底是什么呀?啊,以及这个兼容性问题到底是如何造成的,然后咱们要想解决的话,应该怎么样从根本上去解决这个所谓的兼容性问题呢?这个大家心里明白吗?明白不明白呀。可能有些可能感觉自己明白,那可能有些人感觉不明白,然后你感觉明白,可能也不是真的明白是吧,那咱们说一下这个兼容性到底是怎么回事啊,这个所谓兼容性问题,那肯定是什么呀。肯定是,首先肯定是俩框架之间啊,它是有这个本来是有什么呀,是有依赖关系的,对不对啊,然后呢,你集群上安装的这俩框架的版本,哎,它不一不兼容,呃,当然了,不兼容才会出现兼容性问题是吧?你不能这么说啊,那接下来咱们说说一下这个,举一个具体例子吧,给大家说一下这个兼容性问题到底是怎么导致的,以及如何解决啊,那咱们这就以这为例吧,就以这个have跟Spark为例啊,那比如说啊,咱们现在是不是要配置have on Spark这样的一个引擎,对这样的一个计算引擎,对吧?那所以说我们要想配have on Spark,你说我们在集群当中需要安装,是不是得安装俩框架呀,一个是have啊,还有一个是谁,还有一个是Spark,对能能理解吧,那大家现在思考一个问题啊,那本身我这个haveve呢,是支持咱们去给它配置Spark引擎的,那所以说我们在进行have开发的时候啊,你在进行have开发的时候,假如说你就是have的开发人员,那你说你写代码的时候,你需要怎么做,你是不需要引入一个Spark的依赖。
01:50
而不你是用你写的,就是没有项,那你是不是在po文件当中得引入一个Spark依赖,这是肯定的吧,因为什么?因为你在这边,你你比如说呃,Have这边嘛,我需要呃把这个任务最终转化成一个Spark任务进行提交,那你是不是肯定需要引用到Spark的依赖,这个没问题吧,啊,那这时候假如说啊,假如什么呢?假如说我现在开发have3.1.2的时候。
02:14
咱们还是3.1.2对不对,那我引入的Spark依赖是多少呢?比如是二的是二点多的一个SPA,比如说2.4.5吧,啊假如啊。我引的是2.4.5的Spark,那OK,我就以2.4.5的Spark为基础,我就开始写代码了,OKOK写完了,那写完之后,那咱们这个have是不是完事了,然后你打包,然后你安装啊完事之后你在集群当中,假如说你安装的也是2.4.5的Spark。你说这个会有兼容性问题吗?那肯定没有啊,对不对,那什么时候才会出现兼容性问题呢?假如说你现在你在基因当中,你装的是3.1.2的Spark,它所呃三点一点的have啊,它所依赖的Spark呢,是2.4.5,然后你机芯当中安装Spark,结果是3.0。哎,那这时候它是不是就有可能会出现兼容性问题,但是也有可能没有兼容性问题,到底什么情况下才会有兼容性问题呢?啊是这样的啊,假如说咱们举个例子啊,假如说我现在呢,2.4.5当中,我有一些过时的API,就是SPA跟2.4.5有些过时的API,什么叫过时啊。
03:20
过时当然在2.45里边,它会打一个那个注解,有一个标记deep k对吧?啊就是说过时了,然后呢,到了3.0之后,是不是有些过时的API会怎么样啊。他会会会怎么样啊,会去掉的啊,因为你过时他会给你标记将在将来的版本当中可能会去掉,对不对,就是不推荐使用,是不是有这样的一些说法啊,一般情况下,但是呢,我们这个have3.1.2里边,假如说我就引用了那些过时的API了。啊,就引用了,那结果呢,到了SPA3.0的时候,诶这个过时类别给去掉了,那你去掉了之后,那你想一想,我在集群当中部署了这个了啊,然后呢,我这个have里边是不是会引用2.4.5的那个那个什么东西啊,那个过时的API啊,对不对,但是在我集群当中,我这个3.0里边已经没有这个过时的API了。
04:10
啊,那那这时候是不是就找不到这个对应的类或者是对应的方法了呀,对不对,那这时候就报这种兼容性问题,那所以说一般情况下,大家再去搭集群的时候啊,你会发现啊,就是有些时候啊,你部署一个框架,你去启动之后,它会报一个什么,某个某个类找不到,哎,某个某个方法找不到啊那这个时候呢,你就得多长一个心眼了,你就得考虑是不是有这个兼容性问题了。啊,是这样的啊,所以大家这个应该得明确到底什么是兼容性问题啊,这个是兼容性问题啊,然后呢,再给大家说一下啊。这种兼容问题,你说如果说你要想从根本上去解决它,你应该怎么解决?根本上解决这个所谓的兼容问题,怎么解决呀?怎么怎么解决?那肯定得编译,重新编译源码对不对啊,那编辑谁呀。
05:01
这编译谁应该编译have对不对,因为我现在是have引用了SPA对吧,那我编译have,那你编译have怎么办啊,是不是需要从have的官网或者从getu上边去拉取help完整的源码,拉取到你本地,或者下载到你本地,然后导入你的一个呃,Idea的一个product当中,一个项目当中,然后这时候呢,你找到这个项目的它的那个根根po啊,就是那个副po文件,然后呢,把里边那个Spark的依赖,它是不是假设是2.4.5啊,假如说啊,这个具体多少不知道啊,假如是2.425啊,那这时候呢,你给它替换成多少啊,你集群当中那个18个版本3.0.0啊,你替换完之后呢,你这个需要怎么做呀,是不是需要重新编译整个项目啊,你就在你的那个哪啊,在你的那个idea当中,现在你是不是在idea里边啊,这里边是不是有这个编译没人的工具啊,对吧,有一个没人插件,你打开那个没人插件,然后点里边是不是有一个compile啊对不对,你就点编译,点编译的时候,如果说它这个不兼容肯定会怎么样。肯定会报错的呀,对吧,因为你不兼容啊,对不对,你把那个2.4.5的SPA1代去掉了,你换成3.0的了,那肯定会报错,那这时候你就得怎么做呀。
06:09
你就得去找哪一个类里边的哪行代码报错了,它会下边报错,会提示的是哪一行哪一行啊,这个类找不到,你就点它就行了,然后就跳到那个位置了,跳那个位置了,爆红是不是就报错,是不是会有会有红色标记啊对吧,你就找到它啊,找到它之后怎么怎么解决呀。是不是肯定是这个过时了,找不到这个这个方法了,对吧,那时候怎么解决呀,对你就得改,改成什么呀,改成新的API对吧?啊,因为我旧的没了,是不是肯定会有一个新的取代他呀,对吧?啊,那你就得找,那到底他新的应该是谁呀,这个怎么去哪看呀。这个一般情况下,在你这个过时的API,比如说我2.4.5版本的SPA当中,我那个API过时,它可能肯定会有一个什么呀,该方法已共是已过时,请参考什么什么类什么什么方法是不是有有这样的指示啊,对吧?哎,你按照他那个指示改成哎那个取代那个新的API就行了,然后改一个地方来编译一次啊然后呢,呃,可能其他地方是不是还会报错呀,对吧,那再报错再去改啊,直到什么呀,全改完编译通过没有问题了,这时候你这个码就算改完了。
07:14
啊,这改完了,改完之后呢,你需要把这个源码,你改完之后,这只是源码对吧,这不是我们需要,这不是我们安装所需要使用的那个二进制文件,你还得怎么做呀,你还得把这个编译好,这个改好的源码给它放到哪啊。啊,放到你这个集群的环境当中,你要注意啊,你编译源码的时候呢,你得在你这个集群的环境当中去编译,因为我们集群肯定是Linux系统,对吧,你不要在Windows里边去原意啊,因为什么?因为有时候我们这个框架呢,它会用到一些这个系统的本地库,你Windows的本地库跟你Linux的本地库是不是肯定是不一样的呀,对吧?那所以这时候呢,我们一般情况下需要将你的源码放到你的集群相同的环境下啊,如果是S7.5就都到3SOS7.5的系统下去编译,拿过去,拿过去呢,使用咱们这个ma啊,对它进行打包,打完包之后就得到我们这个大家建到那种安装包了啊,得到安装包之后呢,咱们再解压,再配置,再安装就行了。
08:10
是这样的一个过程啊,就是解决边兼容性的问题,这个东西呢,相对来说呢,就是很麻烦啊,很麻烦,因为你报错,他要报错了之后对不对,一开始你也并不知道到底是啊,由于哪个呃有依赖,哪个依赖冲突导致的啊,你可能也不知道,你需要一点一点先去找啊,然后一点一点去解决,比较麻烦,但是大致的思路呢,就是这么一个思路。啊,这个所谓的兼容性问题啊。
我来说两句