00:00
好,接下来我们介绍一下另外一种导出方式,直接将查询结果导出,那它呢,其实就是用一个select into out fire这么一个语法来实现,那它目前支持主要有三种方式,第一种还是依赖于broker。对吧,第二一种直接依赖于S3啊,直接导出到S3,也还有一种就直接导出到HDFS。只要支持对应的协议就可以啊,那具体语法就是这样啊。查询语法,哎,比如说我查询的某张表,Ne新flow某张表,然后呢,Into out fire。然后再指定一个文件的路径,还有前缀,同时呢,可以指定一个导出时的一个存储格式。还有一些导出任务的属性,来我们具体看一下几个细节啊,首先第一个这个文件路径啊,它指向的是什么。存储的路径及前缀啊,这个是要注意的地方啊,举个例子,我这个fire pass写的是这样,这是不是一个HDFS路径啊,那么到前面为止是个路径,那最后一个斜杠后面的表示导出文件的前缀,举个例子。
01:18
我们如果指定是买。就是这个路径下面,那最终它生成的导出文件是这个样子啊。假设我们这个format指定的是CSV的话啊,对吧,那就是my fire这个前缀啊,那后面呢,就有一个序号由零开始,零啊一啊二啊,这样就看你被分成几次导出嘛啊分割成几次好。另外就格式。啊,导出格式不指定,默认就是一个CSV也可以支持pack,那properties就是指定相关属性了,那我们说了它支持什么brokeer s3协议或HDFS协议,对吧?那在哪指定呢?就是在属性这一块指定的啊。
02:06
那我们后面直接看案例就行了啊。好。呃,那这边呃,还有一些其他的属性啊,要跟大家说一下啊,那比如说这里一个列的分隔符,列的分隔符就是说你是逗号啊还是什么的都可以啊,那默认呢是杠T。而且大家要注意仅对什么CSV格式适用,你要么就改成CSV,要么就别改啊,那航母分隔符一般我们也不会改,都是斜杠N对吧?还有一个我们要注意的,之前我们说这个的时候会拼接一个后缀,从零开始,那到底有几个呢?就取决于这个值最大文件大小,就最终单个文件的最大大小默认为一个G啊。
03:06
超过这个大小,文件就会被切分。比如说我导出的文件有十个G。导出的数据量有十个G,那这个值为1G,那最终导出的时候就会生成十个文件,那序号就是从零到九,对吧?就这个意思,那它取值范围也不是随便取的,必须在五兆到两个G之间,另外一个STEM信息,这个是导出为pack的列式,存储的时候必须要指定啊park格式,必须指定一个STEM。好,这是我们一个基本语法,另外介绍一个事儿,叫并发导出,那么大家要注意我们这种查询结果的导出啊,它默认都是单点导出。如果你想提高它的效率,使用一个并发导出,那是有条件的啊。第一个有一个参数我们要开启,这个是一个会画级变量,我们直接set就行,把它支呃设为true就行,临时set一下啊。另外一个方式,并发导出不支持broker,因为什么呢?因为broker本身就是并发的啊。
04:15
本身就是并并行的,那专门就是为这个S3或者HDFS直接导入这种方式啊,第三一个顶层不能包含salt等单点节点。那具体是什么意思呢?我后面会给大家说一下,其实现在说也行,就很简单,你的语法不能有salt,不能sortt,就排序啊,不能加order by,呃。对吧,不能有order by能理解吧,就是这个意思,满足以上三个条件就能够去执行并发导出啊,那它的并发度是怎么决定呢?实力、数量。乘以这个这个这个这两个参数吧。那么怎么验证呢?我们可以通过spring啊执行计划去看,那这边就一个关键点啊,如果我们可以看到result fire s这个计划是在。
05:11
这个计划一里面,那说明是并行导出,那如果不是在一,而是在零里面,说明不是并行导出啊,就只能通过这么去看了。好了,这个是我们前面给大家介绍一下。
我来说两句