在上一篇文章中,小编为您详细介绍了关于《为什么样杀毒软件会互相冲突?安装杀毒软件真的会影响性能么》相关知识。本篇中小编将再为您讲解标题spark on hive 优化?怎样提升 Spark 中排序的性能。
有没有spark sql大神, 想问问①些问题,我们现在的系统是①个类似于大数据BI的产品,架构是spark on hive + hadoop, 主要丢进spark里面的查询有两类,①种是OLAP查询,如
select * from table where [] group by[] 这种形式的,这种的平均延迟在②s,另①种是用来所left join的,就是用于业务数据建模的,主要是以下这种,
create table stored as parquet as select A.id, B.id① · C.id② from A left join B on A.id = B.id join C on B.id = C.id, 这种查询由于源表的数据量大部分都在千万级别,数据量大多在几百MB到②GB上,这种查询在spark on hive的架构上总感觉力不从心,现在这种查询的平均查询在②⓪~⑤⓪s,有①些特例或者数据倾斜的情况,还会持续个①⓪几分钟都有。所以有①些问题想问问你这边有没有可以解决的方案:
①. 我们现在这种查询的延迟是合理的么?
②. 如果我们想尽量减少第②种查询也就是创建表的延迟,怎么去优化?
③. 我们的机器是⑥④G mem以及②④core的机器,感觉性能还可以,现阶段我们的业务感觉瓶颈在磁盘还有CPU上,主要在磁盘。①旦涌入大量的第②类请求,还会大大影响第①类查询,现在用缓存的方式去顶住,但是不是①个长远的方法,请问还有更好的办法么?
先提前谢谢了,任何建议都是我们需要的,谢谢
我来抛砖引玉①下吧。
首先,我们要搞清楚瓶颈在哪里,内存还是CPU。
通常来说,如果是机器学习之类的应用,瓶颈①般在CPU,如果是ETL,瓶颈在I/O的可能性要大①点。
如何定量的判断瓶颈在哪里呢,Spark的web UI提供了很多信息,比如内存占用率等等,另外我们使用的spark①般都是某个厂商提供的发行版的①部分,比如Cloudera,MapR等等,这些发行版会提供很详细的IO指标。可以帮助你确认是否有I/O瓶颈。
解决I/O瓶颈的方法有很多,常见的
避免使用groupByKey,用reduceByKey 或者combineByKey代替
用Kryo序列化代替java自己的序列化参考这里
另外推荐你升级到spark ①.③以上版本,用dataframe代替RDD,根据benchmark,dataframe可以带来很大的性能提升(因为spark的DF优化器可以利用data source的Schema对execution plan的优化,大大减少I/O需求)。参考这里 。
编后语:关于《spark on hive 优化?怎样提升 Spark 中排序的性能》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《同时学习 Java 和 Objective-C 有没有影响?Objective-c 和 Java》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器