00:00
好,那我们来看一下这个地方整个的API呢,我们就介绍完了啊,里面呢,属于这个DDL和DML,我们稍微总结一下这块的API的一个操作,那其实这两部分操作我们想一下它两个对象是不是不一样啊,就是这个代码怎么记啊,对吧?首先你要从大的方向上,这代码呢分为两种,一种DDL,一种DML。对吧,从大的往小的去进,那DDL他要一个对象叫。要什么对象去操作的呀,叫的命对象吧,的命对象他呢。是table对象而构建出来这两个对象的统一的都要用到一个connection对象吧,Connection对象不是new出来的。是connection factory,因为它是一个接口是吧,你有一个接口也行,你自己写实现方法,你可以有一个试试十几个实现方法要写,而且每一个方法干什么事你可能都不知道,对吧,它提供了一个工程,让你去创建这个内容嘛,啊创建内容过程当中呢,它是不是要你权的参数啊,对吧,它说参数你就可以不用记了。
01:05
因为你调用那个方法的时候,你是不是能看到这个内容,对吧,参数所有的参数不需要记。能听懂吗?所有的参数不需要记,OK,那接下来me table它呢可以操作NS和table,对吧?Table啊,这个NS呢,它比较特殊。就是NS和table创建的时候都要一个什么描述器,对吧,NS描述器和table描述器啊,这个呢,也不用记啊,就是说里面要什么东西,其实也不用记,但是NS这个呢,希望大家额外的去记一记,因为它那个对象也不是干什么。溜出来的对吧,它是通过那个NS去调用一个create的方法,构造一个静态内类build的这个对象,然后通过这个build的对象去调用build,对吧,因为它私有化的,它的一个构造方法,私有化它的构造方法,OK,就是它这个构造比较特殊啊,接下来关于table这块的,其实没有什么特殊的。
02:02
啊,你要稍微记一下一个点,就是在创建table的时候,别忘了添加列组信息对吧,而且呢,是不是在表描述器上去添加的呀。对吧,添加的时候还要一个什么列组描述器。对吧,还有印象吧,啊,至于最后的什么山啊,还有那个什么。查看一下是否存在呀,对吧?啊,判断是否存在啊,这些东西都比较简单,只不过说删除的时候不要忘了disable吧,啊,先让它下线是这个意思啊,这是关于我们所说的啊,整个表级别上面的一个操作,那接下来是关于实际数据的一个操作。就是这个table对吧,啊table,那这个呢,是我们所说的操作数据的,那就数据的增删改查,就是我们看到的put,我们在命令行里面写的是put。Delete的对吧,然后改是不是还是put长是get加盖啊这些东西啊,只要知道一下前面三者里边也是一个对象,这个对象呢,跟rookie是一一对应的关系,而SKY包裹了多个rookie啊,所以它的返回值像盖的返回值叫without,它的返回值的叫without scanner,实际上你迭代出来也是一个一个的什么。
03:19
Result对吧,啊,它得从rookie是把它们之间这些东西呢,都能够给它关联起来了啊都能关联起来,这是我们所说的中间这个点,只不过说大家额外要注意的是这个什么。Delete的啊,首先第一点它呢,是实际上最后调用的还是put的操作了,就跟put是一样的操作,也不是说它delete的最后调用一个put方法倒不是对吧,是最后还是调到po的数据,插入数据最核心的那块逻戏代码,对吧?啊,实际上还是在插入数据操作,其实这个不讲,大家其实也有体会,因为我们之前插入一条数据之后,再把这条数据激delete的,是不是多了一个数据啊,对吧,多了一个数据啊,他是通过这种方式来做的啊,通过这种方式来做的OK啊,那之后呢,是我们所聊的d delete的里边呢,它可以删除。
04:06
单条数据和多条数据啊,但是单条的那种呢,大家慎用啊,大家慎用对吧?啊那种呢,容易出问题,就是我们所说的你在flash前后。是不是结果不一样了,对吧?啊,结果不一样这个就有问题了啊是这个意思,大家关注一下,好,那之前呢,是我们所关于API的一些总结啊,一些总结OK,那接下来我们看这个。Map map,那这个是什么东西呢?因为我们之前所讲的什么增删改,查这一系列的东西。对吧,是不是对于这个数据直接进行操作的,我们查数据的时候,是不是直接说把这条数据怎么打印一下,对吧,把这个列打印一下,把那个列打印一下,比如说我们查一下这个name,这一列有多少条数据。说假如说给他一个A这一列最大的年龄是多大,有这种查询吗?没有啊,他做不了啊,但是呢,更多的生长环境当中,像这种查询的数据还是挺多的吧啊,所以呢,你是一个分数框架,那既然你想分析的话,你要结合着什么第三方的一个分析框架,那现在我们所学过的分析的框架是不是只有MR和什么。
05:18
Have啊,只有这两个东西,所以呢,我们现在要看这两个东西,而且我们之前提过,你后面学了Spark Spark也可以读啊读的数据,或者说你在生产文件中,假如说要用到什么link,假如说在乱七八糟的用的A框架,B框架,C框架,只要这个框架是一个。分析框架,而且它能很方便的读取h base的数据,那这些框架是不是都可以作为h base的一个分析引擎?对吧,那你只要读能读H倍的数据,而且你这个框架本身又是一个分析框架,是不是都可以作为H倍的分析引擎啊,对吧,现在我们学的分析呢,只有MR和还有这两个吧,啊,这两个都可以啊都可以,那我们接下来看一下怎么用的来第一个。
06:03
呃,导入文件系统这个做分析,那我们就不聊了,刚才我们已经聊过了,接下来呢,官方他提供了几个案例啊,我们就会看一下这个案例,那现在好了,现在是这样的。现在是不是你。要读h base数据啊。没问题吧?那你告诉我应该谁侵入谁的家暴啊?是不是应该哈多这边持有H加包,因为是哈多要去操作H嘛,对吧,假如说你哈多操作MY,像我们之前看到的have要操作MY搜,是不是你把have的驱动包扔到了,不是你把MYS的驱动包扔到have底下呀。对吧,啊,你要看A如果要操作B2个框架,对吧?啊两个内容,那A1定要持有B的价包,要不然他怎么去操作它,这没问题吧?啊后面也一样,你have要操作,你have这边呢,同样的要有什么。
07:00
H base的一个内容啊,是一样的,那我们先看一下,那他到底要哪些内容呢?你可以通过这个命令来告诉你。啊,来,我们把这个命令执行一下,这个叫ma什么。CB,注意,这个不是copy,也不是卡。他是class。啊类路径类环境啊来走一下CD到OB Mo。啊,给你列出来一堆的什么,还有K也放在里边了,因为这个是不是客户端的一个入口啊,啊,你也要K加包,因为你要去获取CK的一个什么数据嘛,啊这很正常啊,其他的I什么。客户端啊,等等这些东西,HP的一个工具类对吧,啊工具类等等这一系列的内容啊,这一系列内容他都需要啊,他都需要那这个命令执行出来,也就是说你MR想要操作H。
08:00
啊,你想要操作杯可以你MR得持有什么这些个假包啊,持有这个价包啊,那有两种方式可以很快的让他持药啊,第一种呢,是这样的,临时生效的这种方式。我直接将什么home哈,Home这些东西呢给它拿到,拿到之后呢。看这这个叫什么,哈杜的一个class pass,哈杜它这边那个什么。环境变量啊哈杜的一个环境变量,好,那接下来你去干什么事?你看。这个。单引号什么意思?将执行结果覆盖前面的变量法。如果说我不写单引号,那不就把这个这个变量不等于这个字符串了吗?对吧,我现在把这个单引号就包裹执行,执行完了结果给它,也就是说把这一堆东西干什么。
09:02
给他了这堆东西不是全路径吗?对吧,你写的全路径添加到他多的环境名单里面,是不是OK啊,对吧?是这个意思啊,是这意思,也就是说你可以去做这个事儿,那这个呢,相对来说这个只是临时量,因为你当前这个窗口关闭了,你临时创建的这个环境变量还有吗?没了对吧,啊没了,所以呢,我们选择什么。这种方式啊,选择这种方式,当然这种也可以啊,你可以这样去做啊,当然呢,我们选择这个什么永久的啊,永久的这种方式。好,那这个里边呢,我们要干什么事看一下。我们在哈多inv里边找到来,我们点开这个哈多V。Default呀,这些东西我们都给它关掉啊,这个东西先放在这吧。它的面料。找到这个哈多堡,然后这个AC。这个就很烦啊,我下载东西对吧。是哈多,因为对吧,找到这个哈杜宝,因为在上面在这因为环境里边,这个环境里边呢,就有定义什么。
10:10
卡多拉pass的一个地方,对吧,哈拉帕的地方,这整个一个循环,是不是它还要自己给它添加一些环变量啊,那我们这个不能动,我们在这个下面,在这个做循环后面这干什么,添加一个这个代码来看一下CRC。在这个后面啊,来放在这儿。能看得懂这个内容吗?就是首先你这个负循环是不是给他添加了一些内容啊,我把这个内容还要保留着吧。你不能说你添加一个环境变量,把人家自己的环境变量给干掉了,然后在后面追加一个什么。环境,哎,那这个心代表着利下所有的家宝委都跟进来了,如果说你比较有闲心,你可以一个一个的把这些家报去填一下,能听懂。对吧啊,用括号一个一个的去添加一下是不是也就够了呀,因为它药只要这些就够了啊,但是我把全部添加进来是不是只多不少啊T,对吧,只多不少也OK吧啊OK ctrl s做一个保存,那这个东西搞定了,接下来应该干什么事了?
11:17
是不是应该分发重启啊?因为这是一个哈因V,是不是一个静态的资源啊。重启让它重新加载吧,啊重新加载,那既然氧是不是直接重新,那这样吧,我把SDF整个重启一下,那重启之前是不是应该把这个什么。H bases先关掉,因为你现在整个的哈图表要重启了,那你现在h base是不是要停掉对吧?啊停掉重启一下,我们都重启一下,这样更保险一点。关一下啊关掉,然后把多宝关一下点。
12:00
注意关掉之后,重启之前记得不要忘了什么事啊,分发啊,不要忘了分发。因为如果你不分发你这个整个的mmr任务恰好调度到了103104,是不是就执行不了了。因为103104场没有整个这个环境对吧。诶,这个客户端呢,我也给他推销。这块等到它关闭。好。出来到哈杜里边CD的这个EDC哈多XSYNC一下哈,都什么,因为发这一个文件就够了吧,啊走。好,你要不放心的话,咱们要不放心的话,可以看一眼吧,看一下这个什么OB Mo哈AC哈,里边什么哈in没点开,在这找一下,我们之前所写的是不已经传过来了啊,这一行在这吧,啊,没问题了,如果说你要直接加我的代码的时候,要切一下,看一下这个是不是大写,你要注意一下这个路径嘛啊,注意一下这个路径是否跟你的一样啊,因为我已经改了名字了,是不是有的人没改名字,或者说你不是放在摸下,自己把路径改一下吧啊,这个要注意一下,这种问题就不要再犯了啊。
13:24
OK,然后呢,我们重启一下哈,多宝别。大的。好,知道了。嗯。重启下之后呢,我们到这个地方来,到时候呢,来刷新啊刷新看它是否退出了安全模式。那note还在加载当中吧,还没好呢。
14:02
那note已经起来了,但是他还在什么安全模式啊,等待它退出安全模式之后,我们再去起那个谁啊?这辈子对吧,病。啊,把这个准备好,然后呢,这个退出安全模式之后,我们就可以启动,还有11秒。好,安全模式已经退出了,然后呢,把海贝启一下杯的启动一段时间,那我们接来看啊,往下看。这里面呢,就提供了一个官方案例。首先。全路径雅安炸,这个没问题吧,执行一个什么MR程序,对吧,因为现在你要走的是MR程序,官方提供了一个案例,那这个东西叫Li HP的so。这是哪个包厢的?在哪个路径啊,H斯里下这边提供了一个官方案例啊,官方案例,然后呢,看他要两个参数,一个叫。
15:07
Rota。Counter就是他要执行的,就类似于你们之前写的官方案例,What count,它里面进去找主类用的啊,找主类用的,那将来还有一个什么。Student这个就是表明那这个东西的统计什么。有多少行数据啊,统计有多少行数据用的。注意这个地方呢,你要执行在哪个地方执行啊。在H倍加目录啊,如果不在H倍加目录,那你这个地方应该写什么全路径,因为这个是从用的相对路径,所以得在H倍加目录,那前面写的是什么全落地OK吧?啊注意在H的加目录,H呢也应该起了起来之后呢,我们来看一下啊。哈多宝028号6010对吧,零呃都起来了,看这个也都在线了,没问题。来,我们把这个命令给他拿过来执行一下。
16:06
我们应该是sto这张表吧,啊sto,那这张表有几行数据。现在有几行我也不知道,因为一直在删,一直删,是不是没出去了,我感觉。好像没了是吧,删光了是吧。啊,还有一行对吧,还行那可以走。注意这个命令呢,你要粘直接粘着运行的话,一定要在那个是吧,还这边什目录像还是在什目录下,还有一个问题就是你最好就看一下这个是否发写了啊,因为我现在也不确定,因为我这个有的地方我改了,我自己改过来了,对吧,你像这种关于的你看一下啊看一下啊。做MR任务了,对吧?啊,因为也按照价运行的,走了一个MR任务。这个切片呢,是一个切片是一个,它这样的读的是一个HP的一个表,对吧,它的切片数是微定数。
17:04
切边数等于锐定数,能听懂啊,切边数等于定数,OK,那最后好像没给我们输出结果呀,结果在这。一行嘛,这个东西怎么做的,怎么把东西导导到这。啊,怎么把东西打印到这儿来了。那个佛建啊,跟捞佛建没关系啊,你们自己没做过这个事吗?还记得这个东西吗?对,计数器。这个东西叫什么?就这一行叫什么?这个又叫什么?这个又叫什么?啊,这个是什么东西啊。这个叫什么?这个等于号前面叫什么?等于号后面又叫什么?
18:07
KKV啊,这么随意吗?这个不是计数器组吗?这个不叫具体的计数器名吗?这是计数器的值吗?这是一组里边可以放多个计数器,你们当时在定义计数器的时候,不要定义组名,定义计数器名字,然后给计数器就加值嘛。对吧,一点印象都没了是吧?没想过对吧?行,OK啊,这个是通过计数器的方式,但是不管怎么样,这个Rose等于一吧啊,等于一,而且这个counter对吧啊,也就是说这个地方证明了我们通过MAP6是不是可以读。这辈子出去。对吧,这个是不是读这贝斯数据啊,OK了啊,那也就说读就搞定了,那接下来我们能不能通过MR往里写数据呢。对吧?啊,那看第二个管方力啊,第二个官方案例来看一下。
19:04
刚才呢,我们是读第一个案例啊,比较简单,第二个呢,我们是要采用M6将本地数据导到h base里边啊,这个也可以,如果说第二个案例也可以了,那也就是说mmr此时跟。H base里边读写是不是都打通了,那你写h base的一个就是读这个代码,你写MR这个代码是自定义,你想怎么写怎么写。你可以从本地导数据导H,你可以从h base导数据到本地,同时也可以光读出来读A表,把A表的某一些数据导到B表是不是可以?三种啊,这是本地,这是。啊,当然本地呢,包括HDSS对吧?啊,就是本地分析系统,非H存储系统,OK吧,好,那是不是数据,如果说第二个案例可以了,是不是这样的一个结果也通了,刚才我们做的是不是这个事。因为你把那个数据读出来嘛,那既然能读出来,我写到什么本地文件系统可不可以啊,对吧?好,接下来还有一个问题。
20:07
我从h base数据读过来,通过这个M6任务又写到什么?哎,这杯子里边可不可以肯定也可以吧,啊,就是ma跟video这边的一个定义问题吧,对吧?啊就是这个意思啊,就这意思,好,那我们就看第二个官方案例,第二官方例,OK,呃,第二个呢,是这样的,在本地创建一个fruit t SV,那我们把这个拿一下啊,VI一个TSV。啊,然后哎,插入对吧,插入这个数据,我给他拿过来CTRLC这个呢,最好啊,最好还是干什么,看一眼这里边的分隔符,这里边我就知道这个点,就每次都把它删掉之后,它还是有问题。就就是一保存过几天他又变回来了,就很烦,刚才两个钢地吧,啊,你最好确认一下,就是word文档容易出问题啊,就做这种事的时候,哎,这样就好了吧,啊这样就好了。
21:02
保存退出好,现在这个东西有了,这个东西呢,我给他上传到什么。上传到HDFS。啊,我都上传到根目录吧,啊,我也不搞那个什么服务的文件夹了啊,这个文档当中应该是创建了一个服务的文件夹啊,去做这个事了。这个上传上去了啊,上传上去之后呢,诶,我之前上传好像什么东西没打印对吧。现在怎么开始打印这个日志啊?因为现刚才我们是不是将那个X的一个价包放到。他都把整个环境变亮下了,对吧,因为也有logo缩件,他现在就打印日志的时候,找到两个logo缩件了啊,就是说绑定了,找到什么多个绑定的内容了啊是这意思,这个你不用管啊,就是相当于一个警告银行的东西啊,之前是不是没有这个东西,走完就走完了,我们确认一下这个数据是否上传成功了来。入的这TSV没问题吧,好这个就搞定了,搞定之后接下来我们要去创建hpc这张表,这样我先不创建。
22:07
先补创建对吧,我看他会不会自己给我们什么。创建啊,自己给我们创建啊,这块呢,不是让你创建表吗?先不创建,然后接下来直接执行这个命令啊,直接执行这个命令,来看一下这个命令啊,第一个这是两个,第一个这个是干什么上传。啊,这个是那个电去上传两个命令,我就没有做这个了。我直接放在哪。根目录下放在哪无所谓了啊,放在哪无所谓,好,这个才是真正的我们要去执行那个MR任务,我们把这个拿出来,因为它呢比较多一点啊,拿出来看一下。首先这个需要解释吗?不用吧,杨价对吧?啊第二个是不是架包啊,还是用的,因为官方案例呢,都在这个包里的,就类似于你们之前呃在MR当中看到一个官方例叫ex莫斯一样,对吧,它都在这里边,好这个是不是进去找主类用的。
23:01
对吧,找主类用的啊叫import t SV,就跟刚才我们看到roll count的,或者大家之前学到what count是一样的道理啊,因为你这个里边是不是有很多的类在里边,那我到底要找哪个主类,是不是通过这个参数进行传递去找的啊,运行的东西不一样,好,那接下来这些东西呢。看先看最后一个。最后一个是什么东西啊,输入数据路径吧,我们现在是不是直接放到了根目录下,我叫输入的点什么。TSV对吧?啊叫这个路径好,这个是输入路径,那这个就是什么输出了啊输出呢,它比较复杂一点啊,因为他那里面封装的东西比较多,因为这个东西呢,可以往任何表里边导数据,那既然你能往任何表里边导数据,你是不是得告诉我你用什么东西做r key,什么东西做列,什么东西做列足啊对吧,你得搞诉人家这个东西好,那这个我们看一下叫I input t SV点康鲁斯。
24:00
就多个列了一个什么。对应关系对吧,对应关系那第一个你不是里边有三个列嘛,它就是根据位置来的第一个做什么。Rookie啊,第二个做一个列,第三个做一个列,Name加color,最后这个是什么。表明你要导到哪张表,你再告诉我,OK,我们数据呢,是不是三个列,刚才我们看到这不三个列吗?就是将来他会把第一个列做成。做第二个列就叫name啊,In for是列足这个呢,做color对吧?啊,Color这些东西你可以改,随便改吧,但是它不能改啊。它是固定的啊,就是你想哪个列,当然你可以用第二个作为都可以,这个没关系对吧?啊,它跟着位置来的,OK,那我们把它干什么。执行一下,执行一下,还是同样道理。这个杠之前也说过,干什么用的?换行的换行的,那如果说你想把这个杠去掉,你得怎么做,你得把这个东西给它移上来,不能中间有什么。
25:04
Enter,有回车啊,不能有回车,因为在Linux里边,你一回车不就等于执行了,如果说你光秃秃的把它干掉,那这个等于三条命令能听懂啊,等于是三条命令,你一回车等于是三条命令,好,这个呢是表示一条命令,我们把它拿过来执行一下。走。现在我没有见表了,你看这直接干什么?说这个服入的不存在吧,所以说这个地方你必须要保证什么这个表存在,那我们就创建一个什么表。It的对吧,然后列足我们给的是什么in,前面不是写的in吗?对吧,啊一下。重新执行一下A加上你看A下上之后,他把我命令干什么放在一行嘛,就把那个什么反斜杠给干掉了啊,本身呢,本质是就是这样,那我们写成多行是为了方便自己去阅读吧,如果说那你看写成一行这样啊。
26:07
这样也可以执行,但是他的一个可阅读性就变得了。很差对吧,啊变得很差,所以呢,还是尽量的干什么,加一个反斜杠啊,一个回车在这块呢,也加一个什么反斜杠啊,这个呢,就表示每一行的每一行的作用啊,每一行每行作用。好,这块就已经干什么。写完了,这里面还有一个计数器。Bad,对吧,啊,就是说哪些数据没导入成功对吧?啊,他做一个计数,假如说抛异常了,里边什么样的,那我们就干一下这个什么。Fruit。啊,负的,这张表走下。是不是OK啊对吧,那这两个官方案例实现完了啊,因为它是官方案例啊,你生产件当中不会用官方案例吧,但是这两个官方案例告诉我们,现在我们整个哈跟H的一个环境就打通了,无论是map去读数据是OK。
27:03
写数据是不是也OK对吧?啊,两个案例,第一个案例是不是读啊,第二个案例是写啊,读写就搞定了啊,官方案例呢,就起这个作用,一个读一个写啊,一个读一个写,那更重要的,后面我们要讲的内容是不是这个自定义的内容啊,因为生长力当中,但凡要分析的话,你不会用到那个什么。官方力吧,就像你之前写的官方力只是说测试一下环境O不OK对吧?啊,这个也是帮助我们来测试环境的,测试环境OK,把这个搞。
我来说两句