00:00
首先呢,我们还是把昨天的一个内容做一下简单的一个回顾,我是稍微复习一下,我们昨天才开始学这个have啊,第一天内容相对来说也比较简单,而且从第一天的写的所有的搜内容来看啊,他跟MYSO当中的语句语法就真的特别相似的吧,啊跟特别相似,还有它本身就是类斯和语言来驱动那个哈多的,也就是驱动ma执行ma任务来帮我们做分析的啊,所以说have它其实是一个分析数据的框架,它不是他不能够存储数据的,它的一个数据存储在HDF上嘛,HDF上的,然后他跑的任务是mmr,但是他同样的它对于数据的管理啊,还是通过这种表结构的管理,对吧?表结构的管理在它里面可以创建一系列的表,它把这个表跟。
01:00
HDF上那个数据的一个对应关系,是不是又交给了另外一个框架或者工具来帮我们存储啊,默认是在德比里边,然后我们是把它改到了MYSO里边,因为它放在德比里边的,它是一个单用户的模式啊,单用户的模式这样体验非常不好,就是他用的是自带的一个德比,他每个人你每次开窗口的时候,他自己创建一个德比。啊,但是你创建完之后,你再在这个你安装的have根目录下,再去起一个窗口的时候,它就不让起了吧,因为它获取不到它的一个原数据信息了,获取不到原数据信息,那之后我们就是把它的一个原数据啊,存储放到了MY克里边,放在MY克里边啊,这是我们所做的一些操作,然后在这之前我们所讲的就是have的一些基本概念啊,啊数据存储在哪啊,它的一个分析框架呢,用的是什么?然后哎,执行程序运行在延安上啊,就是它的一个资源分配是交给雅安来工作的,那我们知道你要想have能正常工作的话,那你的HDFS和雅安集群一定是要开的吧,所以说你每次你从现在开始,你你开机之后,你肯定是要把哈多所有这个进程都给起来,而且额外要起一个什么history吧?
02:25
啊,历史服务为了方便我们后面如果出现什么异常啊,或者报错了呀,方便我们查找一些作用,查到一些错误的,然后之后我们讲的它那个优缺点,优缺点,其实这个优缺点还是离不开,还是DFS和M6的一个优缺点啊,因为它就是基于在have这个框架,它本身就是在哈果之上又建立了一个分析框架吧,所以它的一个优缺点肯定是逃不开MR它的一个优缺点的啊,所以这里边所所说的它的一个缺点,什么迭代式预算不擅长,或者执行效率比较低,那都是mmr所暴露的问题吧,M分之六十所具有的问题之后是我们所讲的这个架构。
03:13
架构这边啊,底层这块是它的一个基础层,就是哈多HDFS和M6,它是依赖于这两个来工作的,然后这边是它的一个原数据信息,原数据信息我们讲这个原数据信息其实就是它自己的表和HDFS里边文件的对应关系啊,啊,其实就是它的一个对应关系啊,它必须要有这个对应关系,它才能找到这个文件,才能找到具体的这个文件,然后这一块内容什么驱动啊,你这些内容都是还有自己有的吧,啊,还有自己有的,它的内内核里边会有这些东西,解析器,编译器,优化器和执行器,这些东西都是have。
04:03
来把黑口转化为MR所需要的一些组件吧,它经过一系列的这些们优化执行之后,最终才会将这个hi客啊,你提交的这个hi客语句转化成MR,当然我们做了很多操作之后,也能感觉到它不是将所有的一个hiph都转化为MR法,就是我们写的有的哎,它是跑mmr任务,就像我们昨天所讲,我们昨天只遇到了一个了,是什么in色的对吧,音色的这种插入方式的时候,他会走mmr任务,但是你经常的S那个新那种,它不会不会走吗?啊,不会走,因为C拉的星啊,他就是把所有数据全部读过来。对吧,因读过来他没必要做任何的一个分析需求吧,没有的,他就是读数据过来,然后这上面还有一个客户端。客户端操作,就目前我们现在所讲的客户端操作都是这个吧,是不是就开了一个并汉网当前的Linux系统下面开了一个窗口,那这个GDBC的连接我们还没讲啊,我们慢慢讲这个GDBC啊,其实它可以在那个代码里面去连接,跟类似于慢搜克那种方式,这是可以的,但是一般公司当中很少这样用,你想想看为什么效率太低了吧,效率太低了,你在代码里面去运行这个开的话效率太低了,它一般什么时候用呢?它是跟第三方跟另外的框架再结合的时候。
05:40
他还可以用第三方在其他的框架,在它的基础上再去驱动它的时候,它你就可以要用到这个JDPC连接了,那你用第三方框架,你总不能说看一个什么被害吧,那不现实啊,对吧,他就要用到那个JDBC的一个连接。这里呢,还涉及到一个其他的一个服务,等会我们再给大家补充一下,给大家补充一下,这是整个的一个架构啊,还有的一个架构,你需要知道的就是它分为这四块啊。
06:10
原数据,然后它自己特有的,然后是底下是哈多广,上面有客户端,你分成四块来记,比较好记,然后这一块是还有自己的这块是哈的这块在MYS里边,MYS里边这个就是客户端,你在哪开都无所谓,在哪开都可以啊,客户端你要注意他们之间,你首先他们之间的关系,第二他们的一个位置吧,一个位置关系,具体这些东西存在哪,放在哪呢?啊,你要知道,好,然后这底下是它具体的一个介绍是吧?好之后是我们所讲的have鱼,其实说是与数据库的比较,其实我们可以说是与MYSQ的比较,因为大家现在只学了一个MYSQL,只学了MYSQL,然后主要的就是它那个查询语句。
07:03
是很类似的,就是它的一个操作语言啊,很类似的,什么创建表啊,创建数据库啊,或者说一些基本的增删改查呀,Select等等,对吧,都很类似的,但是其实它除了这个它与语句很类似之外,是不是其他的所有的东西都不一样啊,什么内核存储位置能不能更新,有没有索引执行的延迟,然后扩展性方面,然后数据规模是不是都是不一样的,总体来说就是MYS,它处理的数据量比较小,然后我们的have呢,注意数据量很大,然后它呢,注意数据量小的时候,它延迟很低,然后但是它延迟很高。啊,它的核心区别就是这些吧,具体是什么原因导致这块的内容呢?那就是它的一个内核关系呗,它是存储在本地文件系统的,而且它这个扩展性很很差,它是存储在分布式文件系统还是D上的,然后它的一个扩展性很好,所以它的一个规模大,他的一个。
08:06
延迟高,所以它数据两层的小,它那个延迟低啊,那延迟低就说明它可以接在线业务,它只能做一个离线的分析业务吧,整个的你看无论什么不同点啊,都是离不开数据量的问题了,都是数据量的问题。之后是我们所讲的安装这块,它安装跟他度比起可太简单了,是吧,简单太多了,无非就是后面我们需要自己装一个什么买S,买现在就装两个东西嘛,一个客户端,一个服务端,然后你要把那个驱动包给他导到have里边啊,因为你have是要操作MYS的,是需要读MYS数据,同时还要往MYS数据库里边写东西的,写东西的,所以它一定要有它的一个驱动包,因为他的驱动包他才能够操作买S,操作买S,然后后面就是他的一些常用的交互命令。然后交互命。
09:07
这我们所讲的它是不是两个常用的,常用的一个是杠E,一个是杠F啊,一个杠一杠F,杠E就是执行命令行里边的词汇余句啊,然后杠F你看后面跟的是file name,就是跟着一个文件,那它执行的是一个文件里面的一个还口语句啊,执行一个文件里面还语句,当然你这个文件里面还语句是可以有多句的,知道吧,多句的你用分分号隔开就行了,分号隔开就行了。然后其他的一些操作命令,这块大家需要了解一下就行了,你知道它能操作本地文件系统和。HDFS这个哈的一个分布式文件系统啊,所以在have的客户端里边啊,它也是能够查看这两个文件系统的,只不过是查看的方式不一样,像HDFS,它前面有一个DFS,它跟着参数呢,要加一个杠。
10:00
你本身在哈出管,就是你这边开一个窗口的时候,你它都管FS,你是不是也要加一个杠啊,对吧,所以它是这个是一样的,一样的之后就是你可以查看它的一个本地文件系统,那查看本地的时候就加一个感叹号,然后其他的就跟一样了吧,其他的都就一样了,然后他还可以查看它这个所谓的一个历史命令,历史命令就是这些东西啊,都是帮助你调错了,或者你发现哪一条搜索执行的不对,你可以查看一下,有可能你在这个have的窗口你已经关了。对吧,它的窗户已经关了,你再进去的时候就找不来了,找不回来了,那怎么办呢?你要想起来还有个历史。还有一个存,专门存那个命令历史的地方。那你就可以去查看你之前是执行了什么一样的一个思考,他报了什么错,可以回回滚来查看一下你的报错信息,对吧?啊,哪条语句执行的不对了。之后就是我们一些这些个属性配置,也就是一些非常常见的一些属性配置,其实默认的它就是在这个下面嘛,而且我们当时是不是手动的创建的这个文件夹呀,对吧,其实你可以尝试一下,你不手动创建,你在起开之后,它会给你自动的把这个目录创建起来,把这个目录创建起来。
11:22
这个目录是写在它的一个配置信息里面了。它有一个mes stop.wellhouse点点啊,这个路径是哪?在它的配置信息里边,当然你可以在你自己的have got set ma里边改掉吧,你你就想要have,不要这个warhouse也可以吧,这都可以的啊,既然它能通过属性的方式配置进去,那这些属性呢,一定是可以改的,一定是可以改的,之后就是查询信息啊,一个显示这块主要是为了我们自己看起来比较方便嘛,其实床这个东西不配。
12:00
也无所谓了,它不影响我们操作对吧,只是我们看起来舒服点,它有一些头,或者说你知道自己在哪个库里边,知道在自己在哪个库里边之后是他一个运行日志啊正常的,如果说你不配日志在哪。在这个time下,有个艾特惠谷。是不是这有个have点了板,这是我们之前是没配的时候它。他的打印的一些日志吧,它默认的是在这个位置的。默认的都是放在探保文件夹下的,所以他有可能把日志就删了嘛,因为探保文件夹是不是如果内存或者资源不够的时候,它自动会回收啊,所以说你把一些重要的信息放在这个地方不安全,我们就可以改它的一个位置啊,最好是把它配到咱们have自己的一个安装目录下边,就跟我们那个hard多那个data一样,它默认的是不是也在tab底下来,那很不安全啊,资源不够的时候它自动回收掉了,那你这个block其实还好,你让他都把那个date那就很重要了,是吧,你所有的数据是不是在data里边啊,那你要回收掉了,你集群上数据全部丢失了。
13:10
所以它比log还更为重要,对吧,当然你这个log是帮助你检查错误的,回收掉了之后也不太好,所以你这种能改的东西你给它改一改,改一改之后是我们所讲的它的一个参数配置方式以及优先级问题吧,这个其实跟我们HDFS它的是一模一样的啊,昨天是不是对比的HDFS来给大家介绍的呀,它其实就是一样的,有它有默认配置,然后你可以手动的来增加一些配置,然后你在启这个客户端的时候。是会指定这个属性啊,然后同样的你在这个客户端里边,同样的还可以去设置它的一个属性嘛,当然这两种方式的话,它都是针对于看啊。本次还有这个窗口有效的,它不是永久有效的,不是永久有效的,随后我们讲的是它的一个基本类型,因为我们接下来就要涉及到对汉真正的一个操作了,一个增加改查,首先是数据库和表的增加改查吧,之后就是DMR点,就是数据一个操作语句了吧,就是真正的对于数据的一个增删干啥了。
14:26
啊,那这一块在这个做这个之前啊,一定要了解汉当中的一个数据类型是什么样的,数据类型是什么样的,那基本的数据类型跟我们Java是一样的。然后它多了集合的一个数据类型啊,在Java里边,其实ma对跟Java是一样的吧,但是它相当于多的是跟MYS来对比嘛,哎,更复杂的一个结构,复杂的一个结构。啊,都可以用的啊,这边是稍微有个例子,但是要注意的是不是。
15:00
这个collection a这个指定的分割符,它是ma的,都是用这个来指定的,而且不能指定多次吧,那也就要求我们干什么事啊数。对,你要把所有的你只要用到这个结构,你要把所有的这个结构都要统一,也就是说你在所有的数据在进入have之前啊,一定是要干什么做清洗的,做清洗的,因为你不知道后台传过来的数据,你像这条数据,它有可能你看这边是我们已经规划好的,都是用下划线分割的吧,但是他从后台传过来的时候,数据没有这么好吧。它没有那么好的,那这个时候你要自己把数据拿过来,你写一个MR程序,对它进行清洗吧,就读一下,然后就,而且也不需要reduce吧,就直接要脉搏阶段就够了,因为你只需要你要干的事是什么?替换字段嘛,就是把它这个分割符替换成一样的,替换成一样的就够了,是这个意思。
16:07
这块是需要大家注意的一个点,因为它只能指定一次,如果说这地方它设计的是,哎,这个地方是main items,或者说A瑞items,那你就无所谓了吧,那你只需要保持什么,你如果里面多用了多个ara,那你要保证多个A之间的一个分隔符是一样的就够了吧,而不需要保证这三个是一样的。但是就是它设计的就是哎这三个它都是用collection items来限定的,那你就要保持哎一样的,这个是里边大家需要注意这个点啊,注意的一个点,类型转换这块就没有什么太多可说的,跟Java一样,你主要记住它的一个转化规则就行了,就自动向上转型啊,然后强转啊,强转这块的话,如果它能转过去啊,就转过去,转不过去的话就会返回,就会浪。我归档而已,之后是我们所讲的真正的对于have,哎,这个数据仓库的一个操作了吧,首先我们讲的是定义语言,就是数据定义语言吧。
17:14
这个定义语言主要是对于数据库跟表的一个增加改查对吧?啊,跟表的一个增加改啥,数据库这块的一个内容跟my soq当中是没有太多的一个差别的,只不过他在监库的时候,你可以指定它的一个位置,对吧,监库的时候指定位置,而且我们测试了一个什么什么东西啊,就是你指定位置的时候,如果不给他名字的话。它就是没有名字的是吧,它就没有这个文件夹,但是其实这个库是创建成功了吧,就跟那个我们它系统自带的那个做的很类似吧,啊,就跟那种形象是一样的啊,当然你可以给他指定一个名字,那一个名字,或者如果说你不指定这个路径的话,它是会给你创建名字的吧,它给你创建名字,而且它这个位置就在之前我们所配的那个user have willhouse下面嘛,哎,它的一个默认路径是在哪个地方的默认路径。
18:13
我们查询数据库啊,然后关键还有一个更改数据库吧,这个更改数据库要注意这个红字吧,它是其他的一个原数据信息是不能更更改的,它只可以诶你可以给他增加一些附加的一些描述属性吧,像我们昨天所加的,诶,你给他加一个创建时间啊等等这些属性,而且这些属性你通过DC是直接是看不到的吧,看不到的你要用扩展,要用扩展的方式去看,才能够查看到具体的一个信息,具体的信息,然后删除数据库啊,分别就是一个空数据库的删除,跟数据库里面有表的情况,给个删除空数据库,你直接就drop database贝就OK了,但如果数据库不为空的话,你删的时候是不是会跑异常啊啊,就包括说这个表,这个数据库啊,是不为空的啊,那你就急连删除吧。
19:13
CA接连数,但是正常的你去,如果你这个删除数据库的一个操作是在一个文件里面执行的话,你同样的还是要加上一个。存在的判断吧,因为你删除一个不存在的数据库,它同样的也会跑异常,就跟我们创建数据库一样,创建数据库,如果数据库存在,它是不是报也会跑异常啊?哎,你加一个不存在的一个判断,那删除的时候你加一个存在的判断,存在的判断,那保证它把异常抛掉,不会把异常抛出来影响下面一个SQ语句的一个执行,一个执行就OK了。后面是我们所讲的创建表,当然这块我们还没有具体说是吧?哎,只是看了一下它的一个什么创建表的一个语法已经很复杂了,相对于我们在MYS当中来说。
20:08
它多了很多的一个内容啊,特别是这个分区分同对吧,还有这个以什么文件格式存储的,这个在麦斯当中我们是没有遇到,没有遇到的这块,然后我们所现在所知道的内容就是这么多。你这块吧,还有一个分隔符,我们所知道的就是这块吧,这么多内容,那我们接下来课程啊,就会逐一的去讲什么分区表,分组表。啊,然后这个还用的特别少,然后还有它那个文件,那个存储格式,到底有什么文件存储格式具体是怎么用的啊,分别啊给大家展开说,这整个的呢,是我们昨天啊所讲的一些内容,你要对比的MYS来学的话,还是比较简单的,主要就是第一天就是装环境嘛,大家把黄金打起来就差不多了,熟悉一下它的一个基本的一个操作,基本的操作。
我来说两句