00:00
之前我们给大家讲了一下Spark circle在命令当中啊,它的基本操作,比方说如何构建frame啊,如何构建以及他们R1,那接下来呢,我们准备在当中给大家呢一下SPA,一个操作同,呃,首先第一个咱们添加依赖,在idea当中,要把ma的依赖给它加上,嗯,那我这里呢,因为之前呢都是Spark的东西,所以我现在呢,稍微的我变一变啊来咱们拷贝,呃,拷贝以后,来在这个地方我们拷贝一下吧,然后点击new,咱们创建一个package啊,我们写上一个circle。好了,点击OK啊呃,点击OK之后,那我接下来呢,在这个po当中我们来,呃,咱们这里呢,有一个我们的框啊,所以呢,这里呢,给它放过来,呃,放过来以后这边我们写上一个咱们的蛇口,嗯。大家可以到版本呢,是skyla的2.12版本,然后呢,我们Spark版本是3.0.0,然后呢模块是circle,哎,这个呢,我们看一看,如果没问题的话,那么我们在这里呢,来点击new来创建我们的这个skyla class啊,我们就写上了,咱们叫做SPARK01,然后叫Spark circle,咱们就给大家演示一些基本的操作啊,咱们叫basic。
01:23
好,然后呢,点击OK,那在这里呢,给大家写上一个man,那这个我们怎么操作呢?其实呀,你除了环境不一样以外,跟以前的又能有多大的区别呢,对不对,所以咱们首先第一个呃,要创建Spark circle的运行环境啊环境你连接它,连接它以后干嘛呢?Todo。叫关闭环境对吧,那你中间不就是执行逻辑嘛,对吧,诶执行我们的逻辑操作,嗯。那如果你要想创建我们Spark circle的运行环境的话,就跟之前一样,你首先是不是也得有基本的配置呀,所以Spark com它等于new,咱们叫Spark com,然后点,诶这个忘了导入了,导一下,然后呢,这里点一下我们叫做site,咱们的这个master,诶默认还是用我们本机的这个local的模式啊,然后点一下叫set APP name,咱们就叫Spark circle,其实就可以了啊,然后接下来干嘛呢?我们的创建,那创建的话大家还记得吗?咱们有一个命令行工具当中有一个对象叫做Spark session对不对,那所以呢,我们就写上了啊来,我们叫做它,咱们就叫RK,然后呢,等于new啊,咱们叫Spark session,诶咱们直接写,写完以后导一下,但是大家有没有发现,当你导完之后啊,它这里面有一个红色的波浪线,然后呢,你鼠标放去,他怎么说的。
02:51
他说的是no constructor accessible from here,那什么意思呢?它表述的是没有构造器在这个位置可以访问,那这句话什么意思呢?这个跟我们平时写的可能不太一样,咱们平时可能啊,你再去访问它的构造方法的时候,他会需要传参数,你没传他会报错,对不对?他的这样就告诉你了,根本在这样就访问不了它的构造方法,那这是为什么呢?我们点一下,点点完以后你会发现它在它的构造方法的位置,它加了一个关键字叫private,这个在学scla的时候大家应该学过,它表述的是构造方法私有化,构造方法私有的话你是不能够在外面直接访问的,对不对?诶,这个大家应该学过,诶,老师呀,那就创建不了对象了吗?不一定,因为我们现在的这种方式,我们是什么呢?在类名的后面有一个构造方法,这个咱们称之为叫主构造方法,但是构造对象可不见得非得是主构造方法呀,你。
03:51
你拿那个辅助构造方法不也行吗?所以呢,我们往下找,看看有没有辅助构造方法,它有一个辅助的构造方法,但是有问题,问题在于它的访问权限。
04:03
依然是有问题的。他写了一个private,加了个中括号,叫做circle,它表述的含义叫包私有,说白了就是包访问权限,你得跟他在一个包里面才能用,但是我们这明显不在一个包里面,对不对?那你这么用肯定是不对的。所以啊,在这种情况下,你会发现它的主构造方法你用不了,它的辅助构造方法你也用不了,那该怎么办呢?那就说明你不能拗了呀,那好,咱们在学什么?GALA的时候是不是大家学过我们除了new以外,咱们那个伴生对象的apply方法,是不是应该也能构建对象啊,好,大家看这个图标,这个图标是不是意味着咱们这边会有一个样个半生类,也会有半生对象啊,所以它里面就肯定有半生对象,所以呢,我们打开这个点开,点开以后来吧,我们点一下,你看确实有一个我们的伴生对象啊,那它里面有没有apply方法呢?我们来找一下,好像啊,我没看到它里面没有看到什么apply方法,对不对,好像没有看到最后一个这个还不是,所以啊,对于我们来讲,好像没有什么构建对象的方式呀,其实呀,它有这么个东西。
05:20
叫builder,这个builder啊,它叫做new builder,那其实顾名思义它应该叫构建器,那么构建器的目的不就是为了构建对象吗?所以在这个场合下,其实我们就可以不用new了,但你不用new的话,你得干嘛呢?点我们有个叫builder,这个builder叫构建啊,构建对象对不对?但你构建对象的话,你怎么构建呢?所以点它里面有个这个方法叫get or create。就是你获取,或者说呢,你创建对吧?这不就是我想要的吗?如果从来都没有的话,我就直接创建不就完成了吗?如果你之前已经存在过这种环境对象的话,我直接get不也行吗?对不对?所以啊,这个get or createre还是非常不错的,可是你创建环境的话,你都没告诉我连的是哪一个,那能行吗?所以这个builder里面呀,它里面还会有一些什么呢?我们的功能,比方说我们去进行咱们的配置,你看coniggure coniggure对不对,哎,Coniggu,所以啊,它这里面其实是可以传配置的,咱们点叫coniggu。
06:24
这个肯figure大家可以看到,它其实就可以干嘛呢,把咱们的配置对象传进去吧,所以把这个配置对象,诶给它传进去,嗯,你这么写,写完以后这个地方呢,给它加上啊,咱们叫con fer,这么写,写完以后Spark的那个环境对象就有了,有了之后干嘛呢?我们关闭,叫Spark点我们的close,诶把它关掉啊,所以我们在当前场合下应该是没有什么太多的问题的,我们来验证一下,先不执行任何内容,先保证环境是OK,咱们再往下来做好吧。
07:01
运行一下看结果。好了,同学们看,中间发生错误了吗?没有啊,那说明啊,我们现在应该是没问题的,最起码环境没问题嘛,啊,你中间没东西,那是因为我们还没执行嘛,对不对,先把环境构建出来。
我来说两句