四种常用数据处理方式的比较

文 | Smartbi大数据百科 2021-06-11 阅读次数:8378 次浏览

商业智能BI产品更多介绍:https://www.smartbi.com.cn/

商业智能BI产品更多介绍:点击前往

    常用的数据处理方式(一)传统的ETL工具

    传统的ETL工具比如Kettle、Talend、Informatica等,可视化操作,上手比较快,但是对于数据量上升导致性能出问题,可优化的空间就不是很大了,毕竟底层人家都已经帮你封装好了。

    常用的数据处理方式(二)Mapreduce

    写Mapreduce进行数据处理,需要利用java、python等语言进行开发调试,没有可视化操作界面来的那么方便,在性能优化方面,常见的有在做小表跟大表关联的时候,可以先把小表放到缓存中(通过调用Mapreduce的api),另外可以通过重写Combine跟Partition的接口实现,压缩从Map到reduce中间数据处理量达到提高数据处理性能。

    常用的数据处理方式(三)Hive

    在没有出现下面要说的Spark之前,Hive可谓独占鳌头,涉及离线数据的处理基本都是基于Hive来做的,早期的阿里的云梯1就是充分利用Hive的特性来进行数据处理Hive采用sql的方式底层基于Hadoop的Mapreduce计算框架进行数据处理,所以他的优化方案很多,常见的场景比如数据倾斜,当多表关联其中一个表比较小,可以采用mapjoin,或者设置set hive.groupby.skewindata=true等,当碰到数据量比较大的时候,可以考虑利用分桶,分区(分为静态分区,动态分区)进行数据重新组织存储,这样在利用数据的时候就不需要整表去扫描,比如淘宝常常对一个业务场景利用不同算法进行营销活动,每个算法的营销活动可以存放到不同的分桶中,这样统计数据的时候就会提高效率。对于hive的性能优化我后面会有一个专题进行介绍,这里只简单提一下常用的场景。

    常用的数据处理方式(四)Spark

    Spark基于内存计算的准Mapreduce,在离线数据处理中,一般使用Spark sql进行数据清洗,目标文件一般是放在hdf或者nfs上,在书写sql的时候,尽量少用distinct,group by reducebykey 等之类的算子,要防止数据倾斜。在优化方面主要涉及配置每台集群每台机器运行task的进程个数,内存使用大小,cpu使用个数等。从我个人的角度来看,我觉得spark sql跟上面所说的hive sql差不多,只不过spark sql更加倾向于内存处理。但是他不具有较强的模板话,如果修改里面逻辑要重新编译调试运行,比较适合改动比较小的业务场景,比如数据仓库模型中ods,dwd层的数据处理。因为这两层都是宽表级别的粗处理,目的很简单旨在数据最优存储支撑上层ads层报表开发。

申请试用 了解更多
Copyright© 广州思迈特软件有限公司  粤ICP备11104361号

电话咨询

售前咨询
400-878-3819 转1

售后咨询
400-878-3819 转2
服务时间:工作日9:00-18:00

sales邮箱

商务咨询请联系邮箱

邮箱地址:sales@smartbi.com.cn