Doris_Hive2Doris推数组件
一、Doris常见离线数据导入方式
Broker Load
在Broker Load模式下,通过部署的Broker程序,DorisDB可读取对应数据源(如HDFS, S3、阿里云 OSS、腾讯 COS)上的数据,利用自身的计算资源对数据进行预处理和导入。这是一种异步的导入方式,用户需要通过MySQL协议创建导入,并通过查看导入命令检查导入结果。
Spark Load
Spark Load通过外部的Spark资源实现对导入数据的预处理,提高DorisDB大数据量的导入性能并且节省Doris集群的计算资源。主要用于初次迁移、大数据量导入DorisDB的场景(数据量可到TB级别)。
Stream Load
Stream Load是一种同步的导入方式,用户通过发送HTTP请求将本地文件或数据流导入到DorisDB中。Stream Load同步执行导入并返回导入结果。用户可直接通过请求的返回值判断导入是否成功。
二、Broker Load实战案例
1 | ## 提交brokerLoad任务 |
三、Stream Load实战案例
1 | object Spark2Doris { |
重要事项:
- key列为空会导致推数失败。
- hive中的string列推doris的varchar()列超长会导致推数失败,需要裁剪数据或扩容doris列。
- hive中的列数据类型与doris列数据类型不一致会导致推数失败,如string类型推int()类型。
- 避免部分行推数失败导致所有行推数失败,可以使用doris.max.filter.ratio配置一个可容忍的失败率,否则任意一行推数失败则整个推数任务失败。
另外注意如下支持hiveData.write.format(“doris”)的依赖包并不是公共远程仓库中的,需要自行clone开源spark-doris-connector项目,根据spark版本本地打包上传本地或私域仓库使用。
1 | <dependency> |