00:00
那接下来我们直接来看一下它的语法啊,其实呢,跟那个broke load那个差不多,呃,一开始先来一个export啊,表示为一个导出任务,然后呢,指定一个表明,然后也可以指定分区啊,再接着我们这个是可选的,可以进行过滤啊,你不一定说所有的都要导出去,你可以过滤。另外呢,这个兔。兔就是目标路径啊,目标路径。那如果是HDFS,你就写个HDFS的路径就OK了,然后呢,这一块是导出任务的属性啊,一些参数属性,这个呢是broker的一些属性。对吧,就这么几块很像啊,很像,那导出任务的属性有很多参数,比如说我们可以指定label。对吧,可以指定导出的一个分隔符,对吧?回头导出到HDFS,就按照括号分格,比如说啊,也可以指定我要导出的是哪些列,你不一定要所有列都导出,对吧,可选也可以调整内存限制,默认是两个G。
01:06
啊,他的时间啊,也可以调整等等啊。那这个我们直接开始吧,那下面这里我们就直接啊开始一个演示,那这边你看导出一张表,是我们之前创建的一张表啊,然后two h DFS的路径,那属性我指定的什么呢?啊,一个标签啊,列的分隔符啊,我不要逗号了,比如说我用竖线可以吧,完全可以,这个指定的是到HDFS之后里面的分隔符,呃,那列名呢?呃,我就全都要了,好吧,这个我不指定了。诶。我把所有列都导出去,呃,超出时间啊,调整with broker,然后broker的名字对吧,这是名字啊,当时看你注册的时候是啥名字,那这个ha,呃,我这边集群是没有,所以我不要,我还得改一下来拷贝,我还得改一下啊。
02:09
呃,Ha,不要是不是直接把括号里面全干掉啊,对吧,然后呢。这边的径写的是。HDHA的命名空间,那现在不用ha,是不是要写具体的主机跟端口啊是吧,那我应该是哈杜一呃8020,那我直接放到根路径下面就好了啊,也懒得去创建,你看这一缩减就这么简单了,那我们来看一眼,执行一下,来看一下这个是dori对吧,Shop tables。啊,就这张表,我们先查一下这张表新from example site visit to啊。有这么几个字段对吧,呃,有几条数据啊。什么英国ID啊,日期啊,时间初二,城市,年龄性别,还有几个聚合字段,好了,来把我们的导出任务拷贝粘贴回车好,那这个由于是通过broke来执行的,那么它也是一个异步的,所以你看到直接OK,不代表已经导出完毕,而是说任务成功提交了,那具体执行的怎么样呢?
03:26
你可以去看HDFS的路径啊。来,我们看一下。我是放在根目录对吧。哎,你看这里生成了一个什么,这个是临时的目录啊,临时目录,那临时目录里边生成了一堆临时文件,对吧,这都是临时文件,当我导出成功之后啊,它才会,呃,把这些临时文件重命名,并且放置到指定的路径下啊,我们等一会儿吧。
04:13
那我们也可以通过命令查看导出的一个状态,直接受porter就可以了,我们来试一下受porter。那可以看到呢,这里有一个什么百分百,然后目前是取消状态my label啊这是我起的名字,那这边我们可以看到基本上啊处理完了啊处理完了。你看他的目标路径是什么,由于我没有指定具体的路径,具体的文件对不对,所以它还是保持一个什么啊,好像是这个临时目录。哎,哪去了,我是不是看错行啊对。是不是还在这里啊?对吧,我们看一下呃。
05:07
或者我们一会指定到一个具体的文件上去再看一下,对吧,反正这个ID我们是认得的啊,这些文件我们稍微瞅一眼啊,看能不能看到数据,你看数据过来了吧,而且是什么竖线分隔,这是我们指定的啊。好,这个是来我们再改一下吧,我们再让它执行一遍啊呃,我再来一个LABEL2,然后呢,我用。括号风格。然后呢,呃,这个我指定到一个具体的文件啊,我叫什么啊。export.tst,可以吧,好,那我们再执行一次这个人。好,So is porter。那你看这有一个状态叫exporting,对吧,已经开始执行导出任务,那么目标路径是什么?这次我们指定了一个具体的输出路径和文件,那最终我们就看这个文件有了没有啊,不再是那种临时目录了,当然它中间执行过程也会出现临时目录。
06:21
当然他速度特别快,应该执行完了那个。临时目录已经没了啊。那你看是不是生成了这么一个文件了,对吧,那我点进来这个文件。啊,这是指定到路径对吧,路径,那我们这么用法还不对啊,这只仅仅是一个路径啊,不是指定到文件,那我们看在原先的路径下面会生成一个临时的目录,临时的目录里边。原先呢,是放了一些中间过程的临时文件,当我们写入导出都成功之后,它会把它挪出到外面来啊,挪出到外面。
07:05
那我们看一下。这个是没数据。呃,你看这个有数据,那你看都是什么逗号分格啊,逗号分格啊,那我们把这个改一下吧,呃。这个还是不要用根目录了,看起来乱乱的对吧?呃,我们叫dorisporter。这样就好了啊,又回头我们就这么来玩啊。指定到路径而已啊。好,那我们看一下一个注意事项,他不建议我们一次性导出大量的数据。因为这样会导致一个很高的成本,那建议导出数据量就是几十个GB以内,这种适合这种porter啊,因为会中间是不是有很多中间文件呢,还有一些重试的话,它成本也很高那。
08:07
如果我就是要导出的,那你可以拆解任务嘛,将一个大任务拆解成很多个小任务,比如说按照分区导出。对不对,你一张表做了分区啊,比如说你这张表大表肯定做分区了嘛,做了分区那你就按照分区。呃,然后分多次导出就可以了。另外一个就是在导出过程中,如果F1发生重启,或者是说重轻选举D的,那这时候导出作业会失败啊,这时候我们只重新提交就可以了啊,你不用担心结果出现重复,我们讲了它是先写入到一个什么临时目录下面啊,临时目录下面当完全成功才会啊将它更名到。呃,真正的路径下对吧,那如果你中间失败不会影响你最终结果啊。那中间的这个临时目录呢。
09:03
需要我们手动删除啊,就像刚才讲的这个地方啊,就这个地方,你这个不是文件档,是目录对吧?啊目录,然后中间有个临时目录,你要手动删掉啊。好。另外就是我们受porter的信息是保存在fe里面的,那如果fe重启或切换leader。那里我们是看不到的啊,这个大家知道就行,另外一个细节就是只能导出机表的一些roll up,还有那个物化视图的一些表示,没法做导出的哈,那种无法导出。另外sport会扫描数据,占用IO资源,影响查询延迟啊,这个大家都能理解对吧,这是我们提的几件事啊,Port。
我来说两句