00:00
行,那再往下呢,下面呢,它进来之后啊,看一下这里面定义了一个函数啊,定义函数,然后呢,这是一个大括号啊,大括号里面存储了这么多命令,那这么多命令这个函数里面是一个什么命令呢。Dollar Dollar SCO表示的含义是这。是它的绝对路径啊,当然你这块不用这个dollarco,直接替换成它没有任何问题啊,之后呢,是一个import,不知道大家还记不记得那个SCO,当时我们用的时候。过吧啊。你执行school have的时候,这里面有一个import命令,对吧?哎,就相当于是导入嘛,啊,那你我们后面会用到的是这个导出啊,那好,那把这个导入命令往这一放,那就相当于词库啊,就是相当于B词库下面,然后导入,导入之后呢,这是这个换行啊,嗯,你要是把它干掉,这样这样写也行啊,但是真正的在开发的时候一般就愿意这样写,因为看起来这个啊比较规范啊,行,那这下面第一个参数呢,叫这个杠杠,这个connect连接。
01:09
那连接这时候你要看他官网了哈。对吧,啊,之前我打开这个官网的时候,也大家看过,你看杠杠1PART,然后后面呢,就是杠杠这个connect放大一下。那比如说你看呃,In part,我要连接哪一个数据库啊,MySQL database,然后一正好,那你看我这里面连的,我这里面连的就是my circleq,还1023306几秒。啊,那连接一个数据库不就是这个,呃,相当于是四要素哈,四要素一个呢,是这个URL。啊,一个用户名。嗯,还有一个密码。还有个驱动嘛,对吧,驱动的话,我们已经提前把MYSQ的驱动拷入到这个SCO里面了吧,对吧,拷贝到它这个立包下了,那剩下在这里面还差三要素,那刚才这个连接第一个,然后呢,用户名root密码有一个,那这个这样呢,就是是要素已经搞搞定,搞定之后呢,下面呢是你想想,既然是你把数据就是买买SQL里的数据往这个ADS里面导。
02:11
那你肯定要告诉他导到A是哪个路径啊。是这样吗?哎,那这个呢,就是它给DR,你说你要往这个HDFS哪个路径导,那我们导入的路径呢,这里面起个名字哈,叫original date,就是原始的数据,然后呢,原始数据下面有个gma,因为我们这里面是全球电商这个项目啊,如果你还有多个项目的话,那这里面你就可以在里面,诶项目一项一项目二,项目三对吧?啊是这样一个含义,那gma下面呢,它还有一个DB,那这个呢,是跟我们之前的数据一个细分,嗯,你看一下啊。嗨,多款50070。打开,打开之后你看这里面有date,然后呢,有个gmail对吧,这是用户行为数据,有那之前我们这里面是log log呢是存的是用户行为的啊用户行为的那下一个的话,我们需要在这个平行目录下,在这儿呢,再创建一个DB的啊,成一个DB的,那DB的话你看这个路径,那这个路径呢,就是DB。
03:11
然后这里面是DOLLAR1,那这个DO1啊,是表示这个函数的一个输入值,那这个DO1我告诉大家是什么呢?是一个表名字啊,为什么是个表名啊,你看啊,我后面这个它被谁调用了,你看被他调用了在这呢。第一个传进来参数是一个表名字,为什么要建这个表名字呢?因为每一个表存对应的这个数据啊,就跟我们这个。这面一样,你这个是topic even呢还是topic star,你是不是得区分开呀啊区分开,因为导入到这里面之后,后续的话,我们have表要根对根据这个文件夹进行建表啊,对吧,我把这里面数据导入到这个还里面去,哎是这样的一个含义哈啊。那行,那回来之后呢,也就是说这块呢,哎,那这个DB下面是对应的表名的啊,对应的order in啊,或者是下面对应的是这个啊,这个这是优惠券领用啊,使用点啊等等啊。
04:06
那再往下这个是表完事了,那时间,哎,下一个时间,那就说我这个建表的时候,我说了要按分区计建,你是3月10号了,那我就在3月10号建一个分区,3月11号,3月11号建个分区啊,每天一分区,那一分区对应的这个as呢,就是每天对应一个文件夹。哎,每天对应一个文件夹的一个含义啊,就类似于我们这里面的进去,进去比如说你每天存储一个文件夹,每天一个文件夹,那后面的话,我们把这里面每天的数据漏到这个have里面,对吧?啊,这个数据在漏到have里面啊,这样呢,就have就能够读到这里面的相关数据了。啊,是这样的一个过程哈,好比说这个呢,是目标地址,你要写入到HCS的什么路径,那这块呢,稍微还需要动态的一个变化,你说这个表名字和时间需要动态变化。那下一行命令,这是什么呢?叫delete target d,删除目标路径。
05:05
那这个是这样的,咱们都知道这个MR啊,在跑的时候,它必须要检查输出路径是否存在。那如果你跑了一遍这个数据之后,你会发现哇,那这里面就会添这个路径上就会被添加上数据,那添加数据我说这个底层它是MR。他一判断这里面有数据了,他会干什么,抛异常了,直接抛出这个输出路径已存在,那你就没法执行第二遍了,对吧?哎,那这是什么呢?一般情况下呢,就是哎一加上这句话,他一先判断输出路径有没有,有的话我给你先删掉。哎,先删掉你这个路径是这个含义哈,好,那再往下呢,这块呢,叫query查询。啊查询,然后一个道二,你说这个方法的第二个参数,那你看这个方法的第二参数什么呢?这是第一个参数,这是方法啊,这是方法吗?这是第二参数,查询查询出你这个在百色里面你想要的表和字段。
06:05
那这个呢,功能很强大啊,很强大,不是说你这个这里面表有什么数据,我就一次性全倒过来,哎,我想要你这一列,我就把你这一列倒过来,我不想要这个我就干掉。这多灵活呀,我想要你的多少条,前十条还是前20条,我就导前20条,我想要这些,比如说想要导这个3月10号的,那外二条件外这个cur time等于3月10号,那我就把3月10号倒过来。这是非常强大的啊,非常灵活的,如果没有这个功能的话,那时候我就没法用了,对吧?哎,根据用户的需求自定义我想要什么的数据,那比如说你看我这里面。这个order,这个order这个里面,它就要的是这个创建时间是今天,还有呢,另一个呢,是操作时间是这个do date。啊,这是或者啊,或者你说两个任何一个满足我都能拿到,那这个里面我想要这些字段就拿这些字段,比如说你原始表买里面可能有100个字段,但是对不起,我不关心,我只要十个,那没问题啊,查询预过率。
07:03
哎,就可以了哈,就可以了啊,相当于是可以对原表的一个裁剪,嗯,这个呢非常强大,那那再来。这是到了二号传进来值,那后面这块呢,是一个固定写法啊,为什么是固定写法呢?你看一下这个啊,还是看手册啊,其实刚才讲这些这手册上都有。嗯,查询我找一下那个宽哈。杠杠。Quarry。这个呢,嗯,这个query下面应该有了哈,往下找太大了,这个。啊,这你看这呢,这就是这个过滤条件,过滤条件就是杠杠carry,然后sta你想要的啊字段,然后from哪张表啊,甚至表一个噪音都可以,然后where,然后后面这个,哎,这是它一个固定语法哈,这个下面这个Dollar符,然后呢,Command相当于是一个命令啊命令啊固定这样去写,只不过呢,我们这里面加了一个呃,转译哈比说这块。
08:03
这块加了一个斜杠,一个转移。呃,那中间呢,加上一个and符啊,And符,然后呢,这是那个,呃,到了二,相当于是前面跟后面进行拼接在一起,比如说VR这个条件之后and什么另一个条件啊,这是come on属于它一个固定语法,那再往下呢,下面这个叫number maps啊,Number maps。其实这些参数啊,在这个这个官网上都有。嗯,你看都能查到哈。你看这就是map task toar的,就说你用几个map。啊,它这个强大在哪呢?哎,这个呢,这个切片这个控制哈,正常这个map这个切片不是咱们根据说切片的时候,我们可以设置说128到一片啊,还是2561片吗。他这强到哪,你直接指定多少个切片,他就给你去分了。啊,比如说你这个数据,我不管你是1T还是2T,你是1T啊还是2T,我告诉你,我这面指定就用一个map,或者说就用两个map,你要是用两个map的话,你前面是一个T的数据,它自动把每一个map t里面执行一半,就是0.5T,然后0.5T这样就行,它这个切片规则啊,它是改变了底层的一个切片规则,不是按照我们正常的那个什么啊fair input对吧?啊comp input啊,这种切片规则它是自己自定义的哈,修改了相在源码。
09:28
好,这呢是maps啊,但是这块呢,要知道它默认底层是四个。默认底层是四个map。4MA没有reduce task,记住没有reduce task,因为它不需要聚合,只需要去读数据就行了。那这块当然可以进行一个修改,那下一个呢,是这个,呃,Files terminated啊,BY-T,比如说数据与数据之间的一个分隔符啊,分隔符这块呢,你可以指定成这个啊杠T对吧?啊,当然你可以指定成其他的一些特殊字符。
10:00
都拿过来。你看啊,Set the file SIM的串啊,你说输出的时候呢啊,你设置成用什么进行一个相应的分割啊,是这么一个含义哈,这里面都写了啊,这是输入的时候的一个分隔符,输出时的一个分隔符啊,都可以进行设置啊,你看这里面这是。Fair奥特曼,这是输出的,输出的这个参数指的是这样,那输入呢,前面加上一个input。呃,再往下呢,是下面这几个比较厉害了,比较厉害什么呢?这叫压缩。我从MYSQMYQ里的数据大家都知道它不是压缩的,对吧,它就正常的数据,那我希望的是导入到EDS1落盘它就是拉走的数据,跟我们的用户行为一样啊,一过来就是压缩,那你就需要给他支持上对应的编码方式。啊,你看吧,这里面,哎,上面这块呢,要只能只能一下这个支持压缩之后呢,下面呢,要选择哪一种压缩编码方式,它默认的是这个呃G,那当然它这里面支持的还有这个像啊拉直罗P。
11:13
啊,是这么一个含义哈,一种含义,那下面呢,还有像那个now string,还有这个,呃,那now它有什么含义呢。这块呢是有个坑啊有个坑,而且呢是属于这个面试的时候啊容易,呃,爱问的地方看一下这段话。这句话啊,呃,School will by default import,这个,嗯,Import now values as,是吧,Have however using string。斜杠n to now,看这个你可能比较费劲啊,我直接给你翻译一下,也就说have底层啊,它在存储这个now的时候,比如说表示now呢,用什么呢?存储在底层的时候,是存储的是斜杠N。比如说have,底层存储now的时候是用斜杠N表示的。
12:00
他不是那。啊,这块理解一下啊,给大家换一下。这吧,Have,底层,嗯,用斜杠N表示。那周上那么买这口底层呢,底层啊,就是用那表示那对吧,这没啥说的了,那现在的问题就是你从这个买往这个how里面倒。往还有那边的啊,现在我们这里面还没涉及到直接到还有啊,直接到的是这个as啊,其实一样的啊。ADS,因为这个未来会把ADY数据直接剪切就漏啊漏到have里面,其实跟have的数据是一样的,那这样的一个过程呢,就会出现什么情况呢?你里面底层是now对吧,那你直接加载到这个have里面,它会变成类似于它认为是。
13:05
你要不做一个转换的话,那存储在这里面就是变成它了,变成一个字符串呢。啊,它不是我们想要的那个空,那这不是空串了,这是字符串,那就失去了含义了,那你们后面那个在写这个语法的时候,什么判断is now。完全这不是呢是吧,这这句话就失效了,你外外条件你们一直是否是等于大啊,怎么怎么处理,那这就不对了啊不对了,那同样道理哈,后面呢,我会把这个还里的数据往这个买里面导。哎,往生里面打那个相当于是呢,这个斜杠N你不处理它底层不是斜杠N吗?那你存到这个MY里面也变成了一个斜杠N,那它不认识啊,MY它不认识。啊,就出现这个一个转换的问题,那这个转换怎么办呢?哎,你像这个官方这块给你提供了。啊,提供了,也就说呢,You should,呃,这个前面说的是我看啊,Delete with now,嗯,这块you should parameters,加上这个参数和这个参数,那这个in casee说import,这是导入的时候你可以加这几个参数。
14:09
嗯,二或者这个呢,是这个在用于什么呢?导出的时候加这几个参数。啊,相当于是一个转换,有一共有四个参数,导入的时候加上这两个。导出的时候用这个看啊,导入的时候我们加的是now和now看是不是哈。导入的时候我们用的是。纳使菌和纳南使菌啊,这呢就是查这个官方手册,所以说这些东西吧,你说你你去死记硬背这些东西,其实一点意义都不大,而且我告诉你哈,死记硬背的这个坏处在哪呢?如果这个版本现在我们是比如说1.4.6和1.4.7啊是一样的,那如果它生成2.0呢。它这个参数完全这个含义有可能就变了。那变了之后你怎么办?那你还去死记硬背这些东西?那你你你就凉凉了哈,所以说呢,一定要学会去这个呃,查找一些官网啊,查找一些资料,否则的话呢,你真的就是这个完全死记硬背拿过来啊,这个老师这有一次啊,好像不好使。
15:07
或者说这里面呢,我想这个换一种压缩方式,我换成这个GJ吧,我不会换。啊,这就或者换一个分隔符,我不想用这个钢铁,我想用别的也不行,那这个不行啊这种所以说学习的时候不要学得太死板,一定要呢会学习,而且呢,要经常去查看这个官网。包括后面学习的时候呢,要经常看一些源码啊,比如说SPA瓦的源码啊,弗link源码啊,这些都要看,包括你的海源码应该正常也都会看了,是吧?啊看完之后呢,这个体会啊,相对来说呢,会不一样啊,那除了这些参数,这是库的哈,那下面呢,还有一行代码。加代码啊,看看大家能不能知道哈,Hi do法加。OPT model had 8.7.2 cell had杜common,诶,到这了,叫hi do,法拉州罗。想起点啥了吧,然后呢,再往后看,大家看这块,这个叫呢,Com high to comp拉住了distribute拉了index,是不是创建索引呢,对吧,你说你把这些数据传到这个ADS之后,你得对它创建索引,它才能支持对应的。
16:09
七天,然后呢,这个路径数据在哪呢?在original date g ma db1date,那这个路径是谁呀?你再回顾一下,看一下这个路径不就是你刚才上传到的这个数据的一个路径吗?那就是它一模一样的啊,所以说呢,只要你把这数据一上传,立即就把这个索引创建了,所以说创建索引呢,也不麻烦,你有这个脚本的话,一上传上来,直接一执行完事了。哎,所以说这个呢,也很快啊,不要想着说这个设实成本声音挺麻烦的啊,没有必要行,那这块呢,就是把这个,呃,只不过这块啊,这个一基本语法啊说完了。
我来说两句