00:00
呃,这个scoop的导出脚本呢,我们可能,呃,这个大家并不熟悉,因为我们之前在学scoop的时候啊,咱们是不是当时只是讲了导入啊,对吧,没有讲导出,那之前导入的时候,咱是不是也写了一个这样的脚本,当时那个脚本跟正好跟那个名字跟那个反过来,咱们之前叫啥呀,叫my circle to hts对吧?啊,大家还记得之前咱们那个脚本的结构,还记得那个结构吗?咱们可以简单回顾一下啊。来我们VM一个这个脚本叫怎卖circle推S,那这个脚本的结构呢,大致是这样的啊,我们是不是上来之后就先给这个脚本,给他写了一个啥呀?是不是写了一个公用的函数啊,叫做inmport date import date,这个import date当中呢,我们给scoop传了各种参数啊对不对,这是咱们之前那个公共的函数,然后下边呢,我们是不是又写了好多个这个函数啊啊下边的每个函数是不是都调用了上面那个公用的函数,然后呢,给他传不同的参数啊,然后呢,去导不同的表的数据,是不是这样的一个结构啊,对不对,那后续我们怎么去使用这个脚本呢?怎么使用这个脚本呀?那是不是就是说你想导哪张表就调用哪张表的函数就行了,这是咱们之前那个表那个键门那个导数据脚本的一个结构吧,对吧,那接下来呢,我们来看一下现在咱们这个S库的导出脚本,诶它的结构是什么样的啊,这个相对来说要简单一些,我们这个就不再手写了啊,粘出来之后呢,给大家看一下。
01:23
啊,给大家说一下这里边的注意事项啊,诶,CTRL,呃,一个新建一个文件,咱们粘过来,粘来之后呢,我们来看一下这个脚本,咱们进来之后是不是你会发现它跟其他的脚本不太一样,不一样体现在什么地方,是不是没有那个Dollar do date呀,你看我们,呃,前边咱们所有的脚本,你包括这个S库导入脚本,包括我们从什么at到ods ods到dmd,就是每一层的脚本,我们是不是都有一个日期,到时候都得Dollar获取前一天的数据,对吧?获取前一天日期,然后呢,我们去导前一天的数据,是不是咱之前都是这么做的呀?但这个脚本当中,你看它还有那个Dollar do date吗?
02:03
是不是没有了这块为什么没有了?难道这次我就不需要导前一天的数据了吗?这个就不需要了吗?这个为啥没有啊,这个得跟谁?呃,得从哪个角度去考虑啊,是不是得从咱们S库这个导出导入啊,导出导出啊,就是从海图博买搜QL导,是不是得根据这个导出的这个特点去这个理解呀,对吧?它导出有什么特点,是不是只能导ADS层的咱们那个表的文件呀,对吧?既然导文件是不是每次就是相同的路径,咱们ADS层是不是并没有分区对不对,ADS是不是没有分区啊,没有分区,那你指定的是不是就是那张表的路径,那那个路径它会变吗?他说不会变的,每天是不是都是那一个路径啊,那所以说那这边是不是就没有必要搞那个Dollar data,因为咱们那个路径是固定的,它不是一个动态的,所以说我们也不需要给他写什么日期了啊,那每天导的都是那一个路径嘛,啊哪个路径啊,就是ad层表所在的路径呗,对不对,比如说咱们举个例子啊,来9870。
03:09
哎,打开。比如说我们现在想导ad层的某张表,那你是不是就得找到ad层的这个路径,然后呢,你是不是得点进来,哎,比如说我就想导这张表,那这张表是说你每天导都是这个路径,那里边是不是没有分区的什么日期啊等等这些东西啊,那这路径是写死的呀?啊,那你就没必要再整什么到date了,能理解吧?啊这个大家记住就行啊好,那接下来咱们看看这个脚本咱们到底是怎么实现的啊,在这块呢,我们写的这样的两个变量,一个叫做have DB name,一个叫做my circle DB name,这是我们呃,Have当中那个数据库的名称贸,那这个是MYS当中数据库名称叫做猫report,这是我们刚才已经建好的啊,那接下来看下边先看这个大致的结构啊,这边咱是不是也是声明的一个公用的函数啊,这回叫做export data叫做导出数据了啊,Export类里边呢,是不是也是各种传参,那至于传什么参,现在先不用看啊,咱们先看这个结构好,那完事之后往下看,下边就干什么了呀,下边我们就直接。
04:12
是不是就做判断了呀,判断你的DOLLAR1是什么?如果Dollar一传的是这个表名,那我就导这张表,传的是这个表名就导这张表,传的这个表名就导这张表,能理解吧?然后下边如果说我传的是奥,传的是奥的话,你应该导的是哪些表啊,导的是这ADS层的所有的表啊,只不过咱们现在我们往买次当中是不是一共就建了两张表啊,所以这个奥里边呢,是不是就只有他俩,然后其余的表呢?省略未写,省略未写啊,这个大家要记住啊,行好,那这就是我们这张表的这个结构,那接下来我们重点来看一下这个export date啊,这个公用的函数当中,这个scoop的导出是如何传参的啊,咱们来看一下啊,首先先看第一行,这是重点了啊,这是重点了,来看一下OPT Mo scoop b,这是不是找到咱们那个coop脚本对不对,然后边export。
05:06
注意啊,之前导入的时候在这传的是啥?是inport的,这回是不是传一的了呀,这是导出一个导入一个导出,搞清楚好,那你再往下,这是不是有一个杠大地my map produce.job表q name等于have啊对不对,那这个东西是在干啥?是不是也是在指明队列呀,这个很简单,那接下来看下面这几个啊,来看这。这仨参数应该知道是干啥的吧,这是不是在连接我们数据库啊,对不对,因为你要把数据导到my sol当中,你是不是必必须得给它连接上才行,那这就是在连接咱们的my circle啊,再连接my circle,好,那看一下这个三个参数,那第一个connect gdbc my circle海1023306这块呢,大家要注意把它改成自己的主机面啊,而后边呢,这个是啥,Dollar DB name,这个是不是引用了上面这个变量啊,啊是不是引用了它也就是这块呢?我们导到的是机贸report这个库里边啊,然后边呢,转俩餐,第一个餐呢,是是是否使用这个unicode的编码,咱们使用,那你unicode的编码集是什么呢?是UTF8,这是不是跟咱们建库的时候指明的那个建面那个字符集保持一致就行了呀,我们建库的时候是不是用的是UT8呀,那这边也是UF8保持一致就行,好,那现在往下走,下边看这这个用户名密码,哎,我们该改的得改一下,我的密码是123456,大家自己是多少改成。
06:27
多少就行了,好,那接下来再往下走,再往下走呢,这有一个table,诶这个table很显然让我们指明的应该是一个啥,是一个表明对不对,那我问一下啊,你说这个表明,那咱们指的是have当中的表明,还是MYS当中的表明呢?是have还是买circle啊,肯定是买circle啊,为啥?因为导出的时候我们SCO是不认have当中的表啊,它认的是啥?认的是HD的路径对不对,那所以这个表明,那肯定指的是MY磁当中的表名啊,那这个表名在这呢,他用的是啥?是不是传传参呀,对吧?到时应这个到时应该是谁?应该是这个函数的第一个参数吧,不是脚本的,这个搞清楚啊,你看下边我们去调用这个export date的时候,是不是给它传参了呀,第一个参数就表明啊,就表名啊,那也是这个表名指的应该是my circleq当中的表名啊,这个大家注意就行了,MYSO当中的啊啊那你再往下走,这呢还有一个参数叫做number maps啊,那这个其实就是啥map的个数呗,咱们这数据量小,咱们就成一,如果你的数据量很大啊,ADS层数据量一般情况下不会太大,那所以一般这你设成一就行,如果很大啊,那这边你可以设多一点啊,设多一点好,原来往下走啊,右说一点好。
07:46
那我们看一下这个number maps啊,Number maps这个是就是100啊,很简单,大家往下走啊,那往下走看这个参数。这参数呢,它这个参数名是export d,是不是就是导出路径,那这个大家应该就知道是啥意思了吧,那这个是不是就是我们要把HDFS的哪个路径的文件导到MYQ当中表里呀,对不对,你看这块咱们写的啊,这边是不是直接对标我们ADS层那个表的路径就行了呀,你看是不是就是warehouse warehouse下边呢,是不是加上咱们那个机贸,这个机贸呢,其实就是我们在这儿。
08:20
是不是引的这个一个一个变量啊,对吧,这其实你直接写死也没事啊,这是积贸,积贸后面是ADS层,ADS层后边是不是咱们那个表的名字啊,对不对啊,还是举例子啊。你看比如说我们想导这张表,那你的路径是不是就是warehouse机贸ADS加他呀,对不对?诶那这边正好到了这块了,我给大家简简单说一个小问题啊,就是大家有时候呢,自己去看ADS层这个表的数据呢,你点这个路径,你有可能点不进来,它会报错,这个报错可能是有什么导致的啊,很有可能是由于咱们这个浏览器上,因为有同学是不是可能会装这个广告拦截器的插件啊,对吧?啊跟这个有关系啊,比如说我现在把这个打开,打开之后呢,你看我再建ADS层。
09:02
哎,这个我再刷新一下啊,来,我再进ADS层,哎,还是能进来啊,这个应该是我这加白名单了,可能是啊,就有的同学可能进来的时候你进不来啊,进不来怎么回事啊,是因为这个广告拦截器导致的啊,广告拦器导致的因为什么?因为咱们广告拦截器拦截的是广告,那ADS正好就啥呀,广告的意思嘛啊对不对,广告的简称就是ad嘛,对不对,那所以说他会把这个东西给拦截啊,如果说大家出现这种问题呢,你就把这个你的拦截器的插件给它关了就行啊,关了你就能访问了,能理解吧?啊,我这块应该是加白名单了,我之前,所以这呢我也能正常访问啊啊,那这个大家知道怎么回事就行啊行,那接下来呢,我们继续往下进行,也就说咱们这儿呢,说的是这个路径的事儿啊,这个路径。啊,你就对着你那个表的路径写就行啊,然后咱们这注意观察一下啊,咱们这个路径这个位置。是不是正常应该是咱们那个have当中的表名啊,对不对,这个位置是不是应该是have当中那个表的表名,没错吧?啊,然后呢,它这用的也是DOLLAR1,也是DOLLAR1啊,那所以说那这块这个DOLLAR1指的是MYSO当表明,这块这个DOLLAR1指的是have当表明,没错吧,那这边咱们用的都是到一,那这就要求什么呀?对,要求咱们在买so当中建表的时候,你的ADS层的表明跟买so当中表明是不是也得一样啊,对不对,那所以这块儿你得考虑到这一点,那当然呢,我这儿假如说就是不一样。
10:30
我MYSO当中我的表名跟have当中ADS表明就是不一样,那这边能不能解决?那传俩参数呗,对不对,你就别让他都用DO1了,一个用do链一,一个用DO2是不是就行了呀,能理解吧,这个很好解决啊,好,既然咱们这用的都是DO1,那我们建表的时候你保证它俩一致就行啊好,那接下来咱们再往下看。还有一个参数,这呢有一个input fields terminated by,这个参数应该很很简单吧,这是不是就用来指明咱们这个分隔符的呀,对不对,因为我们现在是在干啥啊,是在把HDFM的一个文件导到my serve当中,那my serve当中数据是必须得是结构化存储,对不对?那它是不是得识别我们是AHD那个文件的分隔符啊,对不对啊,那OK,识别完之后呢,我就能解析成一个一个的字段写到MYSO当中的表里了。
11:19
啊,那关键问题来了,就是你这个分隔符应该注意什么事项?你说这这个分割符必须跟谁保持一致啊。必须跟谁保持一致啊,跟谁呀,是不是必须得跟咱们have当中ADS层的你那个表的分隔符保持一致啊,对不对,那来我们看一下ADS层的界面语句啊,随便找一个,你比如说以它为例吧。那之前我们在刚做ADS层的时候呢,就有同学问过这个问题啊,哎,蔡老周老师,为什么我我我观察我们之前DWTDWSDWT,我们这个建表的时候呢,都没有显示的声明,你这个分隔符,为什么到了ADS层我就显示的声明的这个分隔符了呢?啊这是为啥呀,其实就跟什么有关系啊。
12:09
就跟我们往外导数据有关系,因为咱们ad层数据是不是要通过scoop往咱们的MYSQL当中导啊,对不对,你导数据的时候是不是必须得解析ADS层的这个数据啊,对不对?那所以说在这边你就需要显示的给声明一下,你这显示生命层这个杠T,那我在往外导的时候,是不是也要给你指明这个杠T呀,对不对,也就是说这个位置需要跟我们ADS层建模语当中的这个分隔符得保持一致。啊,如果说你这要不写,不写你这个表能不能建出来,不写也能建出来,诶我这个文档怎么关了,不写也能建出来啊,也能建出来,就只不过就是什么呀,只不过就是啥呀,只不过就是说你后续你在这块去写的时候,你就不知道写啥了呗,对不对,你假如说你不知道它的默认值是啥,你这是不是就不会写了,能理解吧,所以说你那显示的声明就是方便我们让它保持一致嘛,这个也比较简单啊,这块大家知道就行了啊,这是关于这个分隔符的这个事儿啊好,那这个说完之后呢,我们再往下继续往往下走,那再往下呢,我们还剩下这样的四个参数,这四个参数呢,我们可以分为两组啊,分两咱们先看下边这这这这一对吧,先下边这一组啊,这样很简单。
13:20
啊,这一看就是在解决什么问题啊。闹值的问题,咱们之前在讲这个S库导入的时候啊,也就是从买circleq往H3方向导的时候,咱是不是就见过类似这样的参数啊,对不对,那当时咱们怎么解释呢?啊这么解释的,我们说那买次当中是不是会有now值啊对不对,那no值我们导到HTS上之后,那我应该存储什么什么样的呢?那存储什么样,是不是得考虑到我们have当中是,哎,它底层那个now值是怎么存储的呀,对不对,你得让have能够识别你的now值才行,对不对,那have的now值底层存的是啥呀。是不是反斜杠大N呢,对不对,那所以说当时呢,我们就指明了这样的两个参数啊,保证买S当数的倒值存到H之后呢,是以反斜号反斜杠大N这个去存储的,那这样一来我们have呢,就能够识别这个闹值了,如果你不指明这俩参数,那它的默认值当时是啥呀。
14:18
啊,导入的时候默认值是啥呀。就是小写的这个now的这个字符串啊,也就是my soq当中的now值,默认情况下存到HTM上之后呢,它就是啥呀,My soq now值买闹值,默认情况下存到HM就是啥,就是闹这个字符串啊,是闹这个字符串,那no字符串我们have能识别吗?它不能识别have是就把这个东西当成一个普通的字符串了呀,对不对,那要不能识别这个no值,那你比如说我这个什么is now或者is not now这个语法,那have还能用吗?那用不了了对不对啊,这个大家得注意啊,这是我们导入的时候,我们有这俩参数,那同样我们导出的时候,这个是不是也得注意啊,对不对,因为什么?因为大家得注意啊,我们现在在have当中的now值咱们是怎么存的呀?是不是存的到反斜杠大N对不对,那反向大N我导到MYSO当的时候,你是不是得让它得转成买当中闹值才行啊对不对,那相当于这俩参数,我们就是在告诉啥呀,告诉我们此库吧,你在导出的时候,如果说你遇到反斜杆大N了,那你到了买S当中,你就给我存成啥。
15:20
就存储now值是不是就这个原理啊,这个大家记住就行了啊,那这块有俩参数,一个叫做no string,一个叫做no name string啊,那这块这俩参数分别指的啥呀?分别指的是哎字符串类型啊,字符串类型我怎么处理,那这个nu瑞呢,是非字符串类型的闹纸我又怎么处理啊,那通常情况它俩保持一致就行了啊,那这边我们都写反斜号啊,反斜杠呢啊,那这个反斜杠前面是不是还多加了一个反斜杠啊,对吧?这个反斜干什么用的啊,是不是用来转移的呀,这个大家记住就行了啊,这个不再不再多说了,已经解释过了啊好,那这时候呢,我们再来看一下这俩字段。
16:00
这俩字段呢,是在这很关键的俩字段啊,那这俩字段分别叫啥,你看一下叫什么update mode,一个叫什么update k对吧,Update是啥意思啊。更新的意思对不对啊,那这个跟什么有关系啊,这个这俩参数在这儿的作用呢,就是解决我们这个scoop往买SQL当中导数据的时候呢,会出现的这个数据重复的这个问题,它是用来解决这个问题的啊,那接下来给大家说一下啊,我们scoop呢,把数据从HDFS往MYSQ当中导的时候呢,我们有两种模式啊,就是把数据是不是得写到MYSO的表里边啊对不对,你写的时候有这样两种模式。哪两种模式呢?来解释一下啊,一种模式人推啊,一种模式,一种模式呢,我们是这种追加。那还有一种模式呢,叫做更新。一种追加,一种是更新啊,那这种两两种模式咱们怎么用呢?如果说在这儿呢,你不加这个更新相关的参数,你看这俩是不是都是跟更新相关的参数啊,都是update嘛,对不对,这里都是跟跟跟更新相关参数,如果你在这儿不加这俩参数。
17:10
啊,那他用的就是哪种方式啊,就是追加的方式啊,那追加的方式呢,那每天都怎么做呀,每天是不是都是把咱们从ad层或者从A上导的数据,是不是追加到咱们买所有当中的表里边了,那这个很显然会出现什么问题。数据重复问题,因为你每天导的都是全表数据,对不对,原来的数据是每天都重复啊,对吧,那这个追加肯定是不能用的,那我们应该用哪种呢?追加不能用,那是不是肯定用更新方式啊,对吧?诶然后接下来我们用的就是这个update的模式啊,那只要在这儿你有跟update的相关的参数,那它自动使用的就是这个更新模式。啊,然后这个更新模式里边呢,又分为两个种类啊,这个更新模式又分为两种类啊,哪俩种类呢,一个叫做law insert。更新模式又分两种类,一个叫做allowanceer,还有一个种类叫什么呢?叫做update only。
18:05
啊,也就是说这个什么update update mode也是咱们更新的那俩种类,是不是由这个参数去指定啊,对不对,这个mode后边有俩参数,一个是咱们这儿的这个allow insert,还有一个呢,是叫做update only,那这俩应该大家也能猜明白是啥意思啊,Update only就是啥呀?是不是每天只允许更新?对不对,所以只允许更新是啥意思?对,就是说只会更新,你买so当中这张表啊,原来的数据只会更新。啊,这个更新也就是说你每天往买导数据,那买搜当中会有新的数据插入吗?不会啊,只会更新原来的数据,这个行数永远不变啊,这是update only,那还有一种方式叫做allow insert allowsert就是啥?是不是就是允许插入啊,那允许插入的这个效果是什么呢?就是这样的啊,就是已存在的,那我就相当于对你进行什么呀,就进行什么呀,进行所谓的更新,如果不存在呢?
19:04
我就插入能理解吧,那我们这需要的效果应该是啥样的呀。那就应该是啥样的。是不是应该是应该使用这个allow insert呀,对不对,就是已存在的数据,我就诶给你进行所谓的更新,如果不存在的呢,我就给你插入,哎,那这个是不是就既能避免咱们的数据重复问题,也能把咱们新的数据插入进去啊,对不对,所以说我们在这呢,用的是这个allow insert allow insert啊好,那接下来咱们分析分析啊,我们这这个allow insert到底是怎么样的一个逻辑啊,你看啊,假设我们第一天第一天第一天往my soql当中导数据,咱们只有几条数据,是不是只有一条啊,假如就以某一张表为例啊,就只有一条,那一条我是不是导到买soq当的时候,我发现是不是表里是空的啊,没有数据,没有数据是不是就谈不上所谓的更新呀,这个更新必须得你有原数据是不是才能更新,我现在没有,没有的话是不是就是插入啊,OK,我插入一条。
20:00
那到了第二天呢,到了第二天我们是不再还会再往ad层再插入一条新的数据,对不对,那第二天我们往买磁功能导的时候,因为我们只能导全表,对吧?所以说你这次导到底是几条,是不是两条啊,两条倒过来了,那导过来之后呢,我发现我第一条是不是已经在嗨,MYSO当中已经存在了呀,对不对,存在我就怎么做,我就进行所谓的更新啊,其实咱们这虽然叫更新,但是它其实那个数据它会变吗?不会变,因为我们ADS层你昨天那条数据它会修改吗?不会的,对不对,那其实说说更新了,但其实并没有变对吧,那也是用这条数据把原来的值相当于给它,诶相当于覆盖掉了,对吧,虽然覆盖,但是其实也没变,然后呢,我导第二条数据,第二条数据呢,诶,我发现是不是这张表里没有它呀,没有它我就怎么做,所以就把这条数据插入进来呀,诶就这样呗,那到了第三天呢,是不是ADS还子再多一条数据,那倒的时候还是把这三条数据据是不是又又都倒过来了呀,你会发现前两条有了,有了我就进行所谓的。
21:00
重新它其实没变,然后呢,再把第三条数据插入进来,是不是这样的一个逻辑啊,哎,这个就是咱们这个allow insert啊好好,那现在我们来看一下下一个这个参数是啥意思啊,Update k是什么意思?其实这个也很好理解啊,那刚才我们说了啊,这个allowance它的实验的效果是什么样呢?已存在的数据我就给它进行更新,不存在的呢,我就插入对不对?那他怎么去判断,你今天从HDFS上打过来的这一批数据啊,哪些是存在的,哪些是不存在的呢?他怎么去判断呀?啊,根据主见去判断啊,那当然呢,如果说呃,咱们这用最笨的方法,它怎么就能判断出来呀,最笨的方法是不是一个字段一个字段比较,字段都相同,那就说明存在了对不对,但是这个方法太笨了吧,对不对,那所以人家这肯定不是这么的判他怎么判断呢?就根据主见是不就行了呀,为啥?因为咱们的主见什么的是唯一的,只要主,只要主见相同,我就认定你这条数据存在了,主见不同我就认定你不存在吧,能理解吧,那所以说这个地方我们指明的就是啥。
22:06
就是主见啊,就是根据哪个字段去判断你这条数据是否存在,但其实啊,给大家说一下这个地方呢,没必要非得声明主见,我不声明主键也行,我声明其他键也行啊,其他键但是有一个最基础的要求,你这个键必须得是什么样的呀。得是唯一键,必须得是唯一键,也就这样呢,你不是说必须得声明主键,声明其他键也行,但是得保证那个键是唯一键啊,得是唯一键啊,那当然了,我们的这个主键,所有的主键是不是肯定都是唯一键呀,对不对,都是唯一键,所以说我们在这儿是不是直接声明主键就OK了呀,对不对,是这样的啊,那这就是我们这俩参数的这个作用啊,大家把这俩参数好好体会一下,它有什么样的作用,什么样的意义,我们得搞清楚啊,那就这俩参数其实就是为了解决我们每天往买so当中导数据的时候呢,它的这个数据的重复问题的啊,你就这么写就行了啊啊把这个搞清楚,那当然呢,有些企业呢,呃,去解决这个scoop往买SQ当中导数去的这个重复问题的时候呢,他其实也也有不这么做的啊,有些公司呢,可能这个做的这个比较简单粗暴,他怎么做的呢。
23:17
它是这样做的啊,哎,他就把这俩参数了,就给它去掉,然是就去掉,那去掉这俩参数,那你说我们这个数据的插入方式就什么样了呀,是不就是追加了呀,对吧?啊就是不管你存在不在,直接追加啊,就追加,那直接追加肯定会有重复问题对不对,那所以人家怎么做的呢?它会啊,会在你每天scoop导出之前把怎么样啊,把MY思当中的表清空对不对,每天都清空一次,清空然后再插入,是不是就能够解决这个重复问题啊,也有这么去做的啊,那当然呢,这个比较标准做法,就咱们这种做法就比较合理啊,就这么做就行啊,其实那个效果是一样的,效果是一样的啊啊。啊。对,主键中的也插不进去,但是他会报错啊,直接报错了,这个任务就结束就失败了,能理解吧?啊是这样的啊啊那我们大家呢,把这块给他这个搞清楚就行了啊,那这个呢,就是我们S库op这个导数据的这个这个基本函数的这个写法啊,在这里边呢,比较关键的字段呢,给大家点一下,比较关键的应该是哪几个呀?比较关键的第一个port DR,你是不是得知道你从哪个路径往外导啊,那另一个呢,就是table,这是不是你的买S当中你导你要导到的那张目标表啊,这个内知道导到哪张表里,那再一个呢,比较关键的就是这个关于not值的处理,还有呢,就是关于咱们这个数据的这个重复的这个问题。
24:38
那还有一个就是这个。分隔符,这个分隔符必须得跟ad层是保持一致啊,就是这么多字段把它搞清楚就行了,这个其实并不难啊,并不难行,那这就是我们词库的导出脚本啊,啊,那现在问一下大家啊,你说咱们这个school脚本,一会咱们写完之后,这个脚本应该怎么使用啊啊,就是应该怎么传参呀。怎么传呀?
25:00
比如说我想导某一张特定的表啊,你就得怎么办。是不是就得直接case,咱这不判判断判断一下那个脚本的第一个参数嘛,对吧,你想导哪个表,你是不是就导哪个表的表,传哪个表的表名就行了呀,那我就想导全表的全部全部的表呢,传奥就完事了呗,对不对啊,应该能看懂啊,然后咱们来看一下啊。看什么,看一下咱们这个,呃,Case这个判断这里边是怎么怎么去做的啊,这个逻辑,咱们比如说以第一个为例啊,啊,那如果说我的第一个参数是ad SUV count,那它里边调用的是啥?是export date,然后加上谁加上你要导的那个表,表明表明是不是作为这个第一个参数啊对不对,那是不是还有第二个参数,第二参数应该是啥,应该传什么,是不是应该传你这张表的主键呀,对不对,那我这呢,是不是就DT,那当然我不同的表我的主键是不是不一样的呀,对不对,所以说不同的表你需要传不同的主键啊,这个大家注意注意就可以了啊,就是这样去做啊,这是咱们这个导出脚本,哎,咱们就说完了,来,Ctrl a ctrl c啊,那咱们拿过来,拿来之后呢,把这个脚本咱们建出来啊,起个名字叫做呃,HDFS,然后呢,To_MY。
26:14
诶,circle.sh啊,哎,摁一下I,那我们把这个哎全部粘过来,对这好,完事之后shift z我们加一个执行权限,甚Mo加X HD FS to my circle加SH,好,那这个脚本我们就写完了啊,那写完之后呢,我们现在就来做一个测试,看看它呢能不能顺利的导出到我们的这个MYSQL当中啊,那这我们点个直接买hts to my s啊。To my,然后这个需要传日期吗?需要传日期吗?不需要传,我们只需要传一个奥,是不是就导出去了呀,那这个奥导之前呢,咱们得保证大家你在买搜狗当中,是不是得把这个库里先建出来呀,这个表是不是也得先建出来,要不然的话你肯定会报这个表是找不到的这个错误的啊啊那这时候表也建完了,Ad层也有数据了,那我们现在直接给他进行这个导出啊,虽然咱们这传的是奥啊,但是根据这个脚本的内容,我们这能看出来啊,咱们这个奥下边是不是就到了导了这两表啊呃,其子表呢,咱们没写啊,要写的话大家应该也知道怎么写啊,行,我们稍微等一会儿,看这个数据能不能倒过来。
27:21
那导过来的话,我们在买所有当中是不是就能查看到这个数据了呀,对吧,那咱们稍微等一会儿,这个还没有完成。啊,我们稍微等一下啊,同学们不要着急,嗯,好,是不是已经完事了呀,完了之后呢,我们进到我们的这个客户端去查看一下这张表啊,那当然这块你可以这个双击,如果没有的话呢,你就刷新一下啊,刷新一下啊,那当然这个不同的工具啊,这个使用方法不太一样啊,自己记得刷新一下,如果没数据你就刷新一下啊啊,那这边adsi topic已经出现了,那下边这个呢?As,大家说下边这张表应该几行数据啊。
28:02
就一条对不对,这这张表是不是一天就一条,是不是就6月14号这条数据啊,那我们就顺利的导到了咱们的这个,诶买磁波当中,其实就这样的一个逻辑嘛,啊那也就是说我们后续咱们这个任务如果调度起来,那是不是每天都会往咱们买词汇当中,表当中插入一条或若干条数据啊,就是这样的一个日积月累的一个过程啊啊,那后续呢,我们做可视化,咱们就用买词汇当中的数据去做可视化的展示就行了啊啊到现在为止,我们最后一步也完成了啊好,那我把这个视频先录一下啊。
我来说两句