网站首页 > 教程文章 正文
Doris 的数据导出
背景
我们在用业务需求的时候,有时需要把 doris 里的数据查询出来给到下游团队。当数据量很大的时候往往不能直接返回数据。我们采用了将结果文件放到 OSS,然后将 OSS 的路径返回,让下游团队自己去 OSS 上面下载。我们今天就来看看怎么将Doris的数据导出到OSS中去。
导出实战
官方文档上面阐述了 Doris 的导出支持两种方式:
- S3 协议
- HDFS 协议
我们的项目里没有使用 HDFS,有引入成本。就选择了通过 S3 协议导出到阿里云的 OSS 上。
导出的语法如下:
select k1 from tb1 limit 1000
into outfile "s3://my_bucket/export/my_file_"
format as csv
properties
(
"AWS_ENDPOINT" = "http://s3.bd.bcebos.com",
"AWS_ACCESS_KEY" = "xxxx",
"AWS_SECRET_KEY" = "xxx",
"AWS_REGION" = "bd"
)
说明:
file_path(outfile后面那串)
filepath 我们指定文件路径和文件名前缀即可。最终的文件名由我们写的内容的最后一部分+文件序号+文件格式后缀组成。
如,我填的是"s3://moude/test/user_data_",最终的文件名示例:user_data_5371f31f24694f76-beef5d5dca0c6a12_0.csv
format
format_as FORMAT AS CSV? 指定导出格式. 支持 csv、parquet、csv_with_names、csv_with_names_and_types. 默认为 CSV
properties
语法:
[PROPERTIES (“key”=“value”, …)]
支持如下属性:
column_separator: 列分隔符
line_delimiter: 行分隔符
max_file_size: 单个文件大小限制,如果结果超过这个值,将切割成多个文件。
Broker 相关属性需加前缀 broker.:
broker.name: broker 名称
broker.hadoop.security.authentication: 指定认证方式为 kerberos
broker.kerberos_principal: 指定 kerberos 的 principal
broker.kerberos_keytab: 指定 kerberos 的 keytab 文件路径。该文件必须为 Broker 进程所在服务器上的文件的绝对路径。并且可以被 Broker 进程访问
HDFS 相关属性:
fs.defaultFS: namenode 地址和端口
hadoop.username: hdfs 用户名
dfs.nameservices: name service 名称,与 hdfs-site.xml 保持一致
dfs.ha.namenodes.[nameservice ID]: namenode 的 id 列表,与 hdfs-site.xml 保持一致
dfs.namenode.rpc-address.[nameservice ID].[name node ID]: Name node 的 rpc 地址,数量与 namenode 数量相同,与 hdfs-site.xml 保
示例:
SELECT * FROM tbl
INTO OUTFILE "hdfs://path/to/result_"
FORMAT AS CSV
PROPERTIES
(
"broker.name" = "my_broker",
"broker.hadoop.security.authentication" = "kerberos",
"broker.kerberos_principal" = "doris@YOUR.COM",
"broker.kerberos_keytab" = "/home/doris/my.keytab",
"column_separator" = ",",
"line_delimiter" = "\n",
"max_file_size" = "100MB"
);
可以看到除了我们本身的 sql 而外,还需要提供一些信息。接下来我们一个个来找。
1、ENDPOINT 地址和 REGION
可以去到这个地址:https://help.aliyun.com/document_detail/31837.html 找到你对应的地区的 Endpoint 地址。
我这里是华东 1 的。
我对应的地址和 REGION 是 oss-cn-hangzhou 和 oss-cn-hangzhou.aliyuncs.com
2、密钥
点击进去就能看到你的 ACCESS_KYE 了
3、导出路径
s3://my_bucket/export/my_file_
s3 是协议名,my_bucket 是 bucket 名称,替换成自己的 bucket 名称就行了。
都准备好之后我们导出试试:
SELECT * FROM table1 INTO OUTFILE "s3://moude/test/user_data_"
FORMAT AS CSV
properties
(
"AWS_ENDPOINT" = "http://oss-cn-hangzhou.aliyuncs.com",
"AWS_ACCESS_KEY" = "LTAI5tDE****bdG2mKZpf7P",
"AWS_SECRET_KEY" = "J2Ta0JpJq****ClumP7jrxGlRGJo",
"AWS_REGION" = "oss-cn-hangzhou",
"column_separator" = ","
)
300 多 w 的数据大概 5s 的时间导出到了 oss 上。
就这样就导出成功拉,导出的文件样式如下:
- 上一篇: 深入掌握 OSS:最完美的 OSS 上传方案!
- 下一篇: iOS16描述文件下载
猜你喜欢
- 2025-01-11 下载Debian-Pi-Aarch64系统镜像
- 2025-01-11 微信8.0安卓版怎么更新?微信8.0安卓版下载地址最新一览
- 2025-01-11 MySQL运维实战之备份和恢复(8.2)xtrabackup备份到云端(OSS)
- 2025-01-11 利用oss进行数据库和网站图片备份
- 2025-01-11 iOS16描述文件下载
- 2025-01-11 深入掌握 OSS:最完美的 OSS 上传方案!
- 2025-01-11 记录一次「OSS上传文件的前置处理机制」实例剖析
- 最近发表
-
- 网络安全干货知识 | 手把手搭建 k8s docker 漏洞环境
- docker+k8s 报错(k8s docker login)
- K8s 集群运行时:从 Docker 升级到 Containerd
- 轻松掌握k8s安装(使用docker)知识点
- 什么是 k8s(Kubernetes)?Docker 与 Kubernetes选择哪一个?
- 从 Docker 到 K8s:初学者常见的误区盘点
- Docker容器是什么?K8s和它有什么关系呢?
- Docker 是什么? 它与K8S之间是什么关系?
- Docker是什么?K8s是什么?如何从0到1实现Docker与K8s全流程部署
- K8S与Docker的区别(k8s与docker的区别是啥)
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)