00:00
前面我们介绍完Spark通过渲染还有circle这种方式来操作啊,那么可能大家觉得,诶,我在实际使用的过程中啊,我希望说是自己去写代码,写工程,最后去打包提交,那这也是可以的啊,那你喜欢用哪种方式就用哪种方式吧啊。那可能更多人是愿意使用这个编码方式,行,那我们简单说一下啊,那你代码这些细节我就不挨个讲了,因为代码都一样,无非是怎么把它改造成一个咱们一个Spark工程啊,你可以怎么样呢?利用一个什么呢?啊project,当然我这是现有的,回头我会把这个代码放到资料包里面,那么大家去,呃,大家到这个代码里边啊,回头我会放进来啊,直接去导入工程去看就可以了,呃,那如果创建是选择ma美工程,哎,然后下一步啊,下一步啊就是指定一下jav,比如说com点艾特硅谷对吧?啊然后呢,这个就比如说Spark蝴迪DEMO啊这样子。
01:08
然后下一步啊,那你看看这边要不要调整啊,我习惯上调一下。啊,然后完事,嗯,开启一个新的。呃,那么进来之后就是倒依赖了呗,那这边依赖你,嗯,你不要光会复制粘贴,但是也不要求你手桥,你要知道你需要什么。为什么这么写?你把这两个问题搞明白,需要什么,为什么这么写?那首先Spark本身的依赖是不是得要啊,那你看我这里已经给你放好了,呃,首先是scla的这个编依赖啊,然后呢,Spark Co相关的Spark circle相关的模块,我们导进来就可以了。然后呢,由于啊,你可能要跟哈豆交互啊,那你可以HDFS嘛,对吧?啊,那你可以放一个哈豆客户端啊,另外呢,就是一个最重要的这个一个东西呢,就是咱们跟whodi Spark的这么一个一个绑定的依赖,这个是一定这个目前中央仓库是已经有了,以前没有在早期版本我还是通过手动install install到本地maven,然后才再去用的,就是用你自己编译的包,那现在直接就是既然中央仓库有的话,我们直接引用就可以了啊,也不需要你再去手动去install了,好把这些都导入,最后一个是一个be的里边的插件,插件,咱们放了一个打包插件啊,呃森ber这种打包插件啊,那放进来就可以了。
02:41
还有一个maven,用来编译scla的一个插件啊,这些插件大家很常用,但你要搞清楚它的作用是什么啊,如果你没有这个插件,你可能啊,那些所谓的scla scla写的这一些,不管你是object还是class,它都编译不出来啊,你编译完不报错,Target里面却没有编译好的文件,那就是因为你缺少这个依赖啊,缺少这个插件,好吧好吧,呃,那这一些就不啰嗦了啊,那你就对应的去把它拷过来就行了啊。另外呢,为了更优雅一点,我是将一些配置版本信息是写在properties里面啊,这样方便我们随时的去做一个修改啊,那这个是指定一个JDK为八啊。
03:25
啊1.8嘛,啊,然后呢,这是对应的一些版本啊。就这么来用就可以了,呃,那我也不再去敲一遍了啊,我就是演示一下怎么来创建,然后你把它粘过来,粘过来就像我这个碰文件一样。OK,那接下来这里有放了一些DEMO啊,那这里有什么呢?诶,我们去插入数据,哎,我们去查询,我们去增量查询。然后呢,时间点查询,呃,Ins色overri更新,还有删除我各写的一个小DEMO,大家直接拿过来运行就可以了,那为什么代码说不用再写啊,那你看看我这边写法啊,无非是初始化环境,大家看一眼啊,另用一个Spark控符对吧?然后指定一个名字啊,然后呢,如果你要idea运行,你就指定为localo星啊,或者LOCAL1LOCALO2无所谓啊,这个应该都懂,序列化方式指定为k yoo就完事了,之后呢,由于咱们是要用那些所谓的DF来操作啊。
04:26
呃,那我们就创建一个Spark session,把这个控对象传进来,另外呢,我们生产环境一般会做一个双写,什么叫双写呢?就是写到have表啊,既写互利表又写have表啊,这回头会讲啊,最后一张会讲啊,那我就enable have support,也就是说这个Spark circle也能去操作have表啊,就完事了啊,那有了筛选对象之后,那下面的代码很熟吧?啊,这些代码跟什么一样啊,跟这个地方一样,来告诉你在share方式里面的这些地方代码是一样的啊,啊,你看。
05:02
对吧,只不过之前你是在share里面去操作,它没法持久化,对吧?啊没不太也不是没法持久化,就是开发不太方便,现在你写在这里,无非就是将代码挪到了你的这个object里面啊。啊,所以这个呢,就没有什么好说的了啊,就前面该演示的都演示过了,我们随便跑一个吧,比如说这个银色吧,呃。这个路径是这里对吧?啊,那我们,诶我怎么打了个断点,比如说我运行一下。呃,那么这边要提醒大家,如果你运行的时候报这个错啊,Class notefor,呃,说依然没有找到,这是什么Spark com对吧?这是为什么呢?诶,注意看我的泡键,我的作用欲是什么呀?我这些所有的作用欲基本都是provided provided的意思就是由环境提供这个依赖啊,那他在我们嗯,不参与编译啊。
06:20
也就是说这个依赖它,我们在编译的时候不会参与,打包的时候也不会参与啊,那如果你想运行的时候包含它怎么办呢?也简单,你点一下这个run啊,然后这里有一个LT configuration啊,然后把你要运行的这个应用这里有个勾。对吧,就将provided的这种作用域也包含进来就可以了,你不想每运行一个就勾一次,也简单,这里有一个defa defa里面你点开找到application啊,这个就是通用模板啊,然后你把它勾上,这样呢,你不管新运行一个程,一个类,一个程序,一个入口,它都会默认有这个配置啊,应用OK,那就行了,然后呢,我们再来重新执行啊。
07:11
呃。那这边呢,是因为少了一个什么呢啊,少了一个have。那针对这个have依赖的问题,那我们就多导一个呗,啊,我这边就新加了一个啊,就Spark have这么一个依赖,那这个在Spark安装包当中是有的,所以我们同样也是设置为一个provided就行了,那现在呢,这个就是因为我们开启了这个东西嘛,啊行,那就没什么问题了,另外这个路径呢,回头我们为了方便直接写成HDFS路径了。所以后面如果你自己有呃要去玩的话,记得把这个name mode的地址改成你自己的啊,这个你就改成自个儿的。好,那我们来尝试着运行一下,还有没有问题啊。
08:08
你看如果你报错什么,无法加载主类,这是为啥呢?因为我在这里没有执行主类啊。这里是不是有一个manifest对吧?啊,我没有指定入口类,那这个时候怎么办呢?啊,为了避免麻烦,我们当你有修改的时候啊,你都执行一下combine。啊,重新编译一下就行了啊,只要你有修改就重新编译,整体编译也行,或者说你就点中这个类呢,然后点这个be的这里有一个recon啊重新编译一下也可以啊,啊记住啊,如果有一些异常啊,没生效啊,修改代码没生效,你就记得重新编译一遍,编译完之后我们就可以了,哎,我们来让一下诶你看就不会再报那个错了吧,好,现在我们看一下他跑完能不能跑完,有没有报错啊。
09:07
嗯。好啊,没有报错对吧?啊,那最终应该是写完了,我们来确认一下呗,我们看一下这个路径,对,呃,HDFS的这个路径有没有问题啊。好看一下来,呃,Tmp是吧。啊,对,我们有加湖底这个前缀啊,你看这张表现在有了吧,好,我们点进来,呃,发现呢,有这个点湖底的原数据文件,还有呢,这个分区目录,这个是分区目录对吧?啊,我们知道这张表有三级分区,来点一个进来二级分区再点一个,诶,这是第三级分区,好了,那这里有一个趴回的文件,那说明已经成功写入了,对不对。OK,那么接下来比如说我们来查询吧,啊,我点这个query DEMO在这个地方呢,还是一样,呃,我idea运行的话还是logo新,呃路径呢。
10:04
你路径要写成一样之后呢,将它读成一个DF啊,之后注册成一张表啊,一个视图,然后去查就行了,我们查一下呗,啊,我们运行一下啊。那中间这些代码就不再啰嗦了,这个跟我们前面这种渲染方式啊,这些代码都是一样的啊,只不过你把它挪到了idea里面,哎,挪到了一个工程里面去。诶,你看这里是不是正常的查出来了啊,这就是这么简单啊,这么简单好呃,那其他像时间旅行你自己再去改写,那你能不能像咱们这个circleq写法一样呢?啊,就这种,你喜欢用这种DDR语句完全可以啊,对吧?所以呢,你们也可以自己把这些代码啊,这些我用DF的这种方式,你全部改成点circlel的方式来执行不就OK了吗?啊对吧,你所有的操作都是点circleql,然后里面写一个circleq语句就可以了啊,一样的效果啊,啊主要是告诉大家怎么用啊,咱们用idea来写啊,那接下来比如说咱们要打包到集群执行的话,比如说我就执行这个quary吧,啊,因为已经插入过了啊呃,Quary,那我们就得把这个什么local星给。
11:26
住掉啊,诺克星住掉。好。那我先清理一下,再重新打个包,打个包我上传,然后提交给Spark。诶,卡住了。那这里我也写了啊,这个提交运行这里啊,啊直接submit,那这边咱们以cor DEMO为例吧,啊,因为已经插入过数据了。
12:08
好,打包成功我们上传呗,啊,OPT model Spark,呃,3.2.2啊,在这里呢,呃,咱们make个drr my just CD my just好了,然后将这个包丢上来。呃,我们用的是这个with dependence诶,其实你嗯不带依赖也行,因为所有的依赖咱们环境里面已经都有了,包括你这个东西,我们所有东西都是provide,哎,无所谓了,那就带依赖这个传过来啊。好传过来之后呢,咱们来去我这里退出了啊,这里用不到了,直接来,呃提交这个啊,我看一下这个全内屏有没有问题啊,无所谓,我都我什么都不指定啊,我直接去做一个提交。
13:07
嗯。加班不存在。你看一下啊。哦,这个名字变了啊,这个名字变了啊,那我们就用这个名字。好。好了,我们在这里也可以看到,对吧,我们提交价包的方式也查到了,那么你愿意用STEM alone模式去提交也可以,你愿意用雅安模式提交也可以,反正这个代码逻辑是能跑的是不是,那我现在只是简单的最最简单的提交命令给你看啊,就这样子好了。
14:01
这个其实就idea编码啊,你也可以尝试着前面的circle,用idea的方式来去写,去实现啊,都可以啊。
我来说两句