更新时间:2022-02-22 GMT+08:00
导出查询结果
功能描述
INSERT OVERWRITE DIRECTORY用于将查询结果直接写入到指定的目录,支持按CSV、Parquet、ORC、CARBON、JSON、Avro格式进行存储。
语法格式
1 2 3 4 |
INSERT OVERWRITE DIRECTORY path
USING file_format
[OPTIONS(key1=value1)]
select_statement;
|
关键字
- USING:指定所存储格式。
- OPTIONS:导出时的属性列表,为可选项。
参数
参数 |
描述 |
---|---|
path |
要将查询结果写入的OBS路径。 |
file_format |
写入的文件格式,支持按CSV、Parquet、ORC、CARBON、JSON、Avro格式。 |
file_format为csv时,options参数可以参考表3。
注意事项
- 通过配置“spark.sql.shuffle.partitions”参数可以设置非DLI表在OBS桶中插入的文件个数,同时,为了避免数据倾斜,在INSERT语句后可加上“distribute by rand()”,可以增加处理作业的并发量。例如:
insert into table table_target select * from table_source distribute by cast(rand() * N as int);
- 配置项为OPTIONS('DELIMITER'=',')时,可以指定分隔符,默认值为“,”。
对于CSV数据,支持如下所述分隔符:
- 制表符tab,例如:'DELIMITER'='\t'。
- 任意的二进制字符,例如:'DELIMITER'='\u0001(^A)'。
- 单引号('),单引号必须在双引号(" ")内。例如:'DELIMITER'= "'"。
- DLI表还支持\001(^A)和\017(^Q),例如:'DELIMITER'='\001(^A)','DELIMITER'='\017(^Q)'。
示例
1 2 3 4 |
INSERT OVERWRITE DIRECTORY 'obs://bucket/dir'
USING csv
OPTIONS(key1=value1)
select * from db1.tb1;
|
父主题: 批作业SQL语法