00:00
前面我们给大家介绍了一下10SPA时的一些基本概念啊,呃,封装的数据模型,那接下来呢,我们就给大家去讲一讲啊,如何用我们的新的模型来进行Spark开发,好吧,同学们,那但是啊,咱们要分清楚一件事情,就是我们接下来讲的重点呢,主要在于这个模型的使用啊,就是怎么写circle啊,咱们去用这个模型,但是你说这个circle的语法什么的,这些不是我们在这个阶段给大家讲的,好吧,同学们,咱把这个侧重点咱们要分清楚啊,你们的circle的这种语法呀,包括怎么去写呀,在你们后面的项目当中,你们会学习,会专门的来讲,专门的来学,我们这个阶段并不会去讲,好吧,同学们,那么首先我们第一个啊,咱们先把咱们的环境先提起来,大家可以看到我现在呢,已经把境提起来了,其实就是一个Spark cell的命令行啊,把它提起来,提起来以后,那接下来大家看一下我们以前啊,在Spark当中用到一。
01:00
叫SC,就是那个Spark content对象,但是现在由于我们的数据模型发生了改变,进行了封装,那么其实环境对象也发生了改变,不能再用以前的它了,那用什么呢?诶用一个叫Spark session的他们的对象,这个对象啊,其实就是我们现在要给大家介绍的环境对象,那这个环境对象我们该怎么用呢?大家看这个命令行工具,在命令行工具当中,咱们早期的RDD的那个环境对象,咱们叫Spark contest,它叫SC,所以我们在这里直接写个SC是可以呢,诶看到的没有问题,但是呢,我们这里面还有一个叫Spark session,诶这个呢,就是我们Spark circle当中的环境对象了,所以我们叫做诶Spark,诶回车,回车以后大家会发现咱们这个地方就叫做Spark session啊,这是我们接下来用到环境对象,在命令行工具当中,这个是已经事先。
02:00
准备好的可以让你直接来使用了,诶那咱们怎么用呢,对不对,咱们就接着往下看好了,同学们,那么我们来现在看一看,咱们这里面会有一个叫做spark.read。点按个tab键,Tab键以后同学们会发现我们这里会有CSV文件,会会有我们的DBC数据库,还有我们的还有orc,包括什么table之类的,还有包括文本的test,所以啊,包括很多的数据的这个操作,这个里面我们用一个简单的给大家演示一下,那我们怎么演示呢?首先我们写个杰森,但是这个Jason呢,你得告诉我你的那个Jason格式的文件在哪里,那么大家看一下,在咱们的这个B里面有个input,咱们打开其中我们在这里创建一下。我们创建一个叫做U的点,我们的这个JA省,诶咱们拿过来,拿过来以后咱们把这个呢,给它打开啊打开打开以后这里我们要说一下咱们失败的蛇读取的接son格式的数据源,它要求每一行符合接son的格式,所以我们写个花括号,然后呢,花括号当中写上一个username,给他一个张三对吧?好,然后再来一个我们的年龄,这个年龄呢,给他一个30可以吧,同学们,然后呢,拷贝,拷贝以后拿过来,那我现在就三个用户信息了,张三李四,还有我们的王五。
03:28
那么我们的理事的年龄我改成20,咱们王五呢,改成我们的40,现在咱们三个用户信息就出来了,那么出来以后我在这里就写上咱们叫做input。然后斜杠我们就叫做U的点杰son,好,我们这里呢,给它回车,回车以后大家有没有发现它就会得到一个叫data frame吧,而且它会自动识别其中的结构,你这里不是有两个我们的属性吗?一个叫age,一个叫username,按照字典顺序的话,我们的属性排前面,然后呢,Userna排后面,他就把这个结构给你准备好了,那光有这个结构,那我们数据不也有吗?那我怎么看这个数据呢?其实很简单,首先它这里面会有一个我们的对象,那我为了方便呢,我给它改个名叫DF,它等于spark.read.jason然后呢,我写上咱们叫input,然后叫u.son。
04:29
好了,然后呢,我回车,回车以后我们的DF不就出来了吗?好,DF点我们的展示,展示以后大家有没有发现,诶,这样的话我们的数据就出来了,是不是感觉跟我们的二维表格非常的类似呀。但是非常类似是非常类似,可是我怎么用它呢?你这个展示像个二维表格,但是我数据当中呢,那我怎么把我想要的数据给它拿出来呢?比方说我想把咱们的年龄拿到,或者说我想取得年龄的平均值,这个功能我该怎么做还要告诉大家。
05:06
比较好做。因为咱们现在这种表格是不是有了,那你只需要这么写就行了,叫spark.circle然后写个括号。这个括号当中啊,同学们看我现在就写上叫select,咱们叫age from,有问题来了。什么问题啊,你现在我要去查询我们的数据,可是你没有表啊,那你该怎么查对不对?所以啊,有点问题了。诶,可是我刚才说过了,这个就很像一张表啊,对不对,所以啊,咱们这边可以写文,但是你首先得先把表创建出来,所以我们的DF点有一个方法叫create type view,叫创建一个临时的视图,我在这里就写上叫做U,我创建一个临时的UR的视图,那么这个时候你再去写circle,我写个circle,在这个里面可以把circle文写上叫select的,咱们叫星,From,咱们叫U,记住了,刚才你这里不是创建了UR吗?我这里就可以用这个U,对吗?那好,那我在这个地方给它来,我们叫做点儿,我们叫做它就可以了,回车。
06:18
回车以后,大家有没有发现我现在的这个地方已经出来了,但是呀,你不见得全要啊,我可能是不是只要年龄,哎,只要年龄回车,你看年龄就出来了,哎,这不挺方便吗?那老师那我想取年龄的平均值怎么办?好同学们看我现在只要用这样的一个方法就可以了,写个括号,写个括号我回车。你看我们平均值是不是就出来了,我就问问同学们,你们觉得你们用RDD怎么能得到它?我相信你们能判断出来,你要写个RDD的话,要比这个要复杂的多吧,想要求平均值,你得把每个年龄道,还得把它出现的次数取到对不对?年龄求和,次数求和,最终给它相除,就是平均值,但是我不管你怎么做,它都要比这个S复杂一点,对吗?所以啊,你会发现这就是一种简化RDD的一种开发方式,所以还是非常不错的,好吗?同学们。
我来说两句