Doris之如何将oss的表数据导入到doris的表中并完成调度

Doris之如何将oss的表数据导入到doris的表中中并完成调度

前言:写入doris的脚本可以看我之前写的写入doris分区表详解

问题: 当你把oss地址配好,运行脚本成功后,去doris的目标库中执行 show load 就会发现导入失败,提示使用broker拉取文件只支持hdfs AFS BOS三种方式

原因:现在很多公司为了降低成本使用oss替换hdfs存储文件,因为表的文件块在oss存储,所以需求由hdfs 到 doris 变成了oss 到doris

现在想通过broker从oss上拉取表到doris中,无法直接做到
解决思路一:可以考虑写一个java/spark/flink的代码通过jdbc分别连接oss和doris,实现数据表拉取

解决思路二:通过配置sqoop建立于oss和doirs的连接,用sqoop将表数据导入到doris中

解析:思路一和思路二能够实现是因为doris使用了mysql的数据引擎,能以连接使用mysql的思路建立通信通道
经过实操发现,上述两种方式虽然能够实现oss到doris的需求,但是并不适用大数据量的表,因为思路一和二归根到底是使用jdbc连接后,将数据insert into 到doris表中,使用show load查看发现有大量的load进程,每一个load都是insert部分数据,最终虽然会成功,但是会大量的load的日志,因为fe会存储load日志,这就对fe调度节点的压力会剧增,很有可能在导入的过程中fe报oom内存溢出的错误,所以不建议使用

解决思路三:如果是新业务线的表,还是建议建在hdfs上,就能避免这个问题,如果是旧业务线的表,那就在hdfs上建一个临时表,写个调度脚本将oss的表数据写到hdfs上,然后broker load 导入脚本使用hdfs的临时表路径,最终实现需求,而且使用的是broker load只会产生一条load日志,对fe是友好的,建议使用

总结:经过测试,用jdbc可以写入,但是会产生大量的元数据日志,数据量一大会使得doris存储fe过载,最终解决方案,通过jdbc/sqoop/shell脚本将表数据从oss拉到hdfs上,然后再用broker load导入doris,既实现了功能,doris兼容性也好

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值