精打细算使用MaxCompute搭建数仓

摘要: MaxCompute是一套阿里自主研发的数据仓库解决方案。产品除了功能、性能、简单等优势外,还能在费用上节省下一大笔前。墨迹天气使用MaxCompute,除了性能和稳定性也有提升外,整体存储和计算的费用比之前节省70%。这是如何做到的呢,这里有一些常用的规则。

原文链接:http://click.aliyun.com/m/43695/

MaxCompute是一套阿里自主研发的数据仓库解决方案。产品除了功能、性能、简单等优势外,还能在费用上节省下一大笔前。墨迹天气使用MaxCompute,除了性能和稳定性也有提升外,整体存储和计算的费用比之前节省70%。这是如何做到的呢,这里有一些常用的规则。

在讨论如何做到之前,我们先看下MaxCompute是如何计费的。根据目前的文档,目前的计费方式包含数据的存储、数据的下载以及计算费用。其中计算费用又分I/O后付费和预付费两种收费模式。I/O后付费根据实际的计算来进行收费;而预付费相当于包了几个CU只有购买者可以使用,这几个CU上随便怎么计算都不会产生计算费用。所以如何减少费用,也就是转换成如何减少存储的费用、如何减少下载的费用以及如何减少计算的费用。

存储

数据存储在MaxCompute上是使用列式存储并有压缩的,底层数据存储方式不需要用户自己维护。但是用户可以通过减少存储在MaxCompute上的数据量来减少存储的费用。可以通过及时删除不需要的数据来减少存储费用。这里需要推荐用一个叫生命周期(lifecycle)的功能来定时回收过期的数据。设置了生命周期后,如果是分区表,分区表里的某个分区如果在指定的时间内数据没发生变更,系统会认为这个分区已经不需要了,会自动删除这个分区。如果是非分区表的话,指定的时间内没有数据变化就会删除这整张表。这个功能可以用来配置到一些历史记录表上,比如说如果不想要一年之前的历史记录,可以把表根据写入时间做分区,然后设置生命周期为一年。数据写入的时候,每天数据只写入到当天的那个分区里。一年后,之前的数据因为一整年都没有数据写入,触发生命周期的条件,并后台定时作业删除对应的分区里的数据。

在实际使用中,除了因为没及时删除过期不要的历史记录造成的额外的存储费用外,更多的是因为对数据的管理不到位导致的一些不需要的表一直没删除导致的空间占用。仔细想想,在做查询的时候使用Create table xx as select先存了一些临时表,用好没删除一直放着占用从存储空间,这种事情应该每个人都做过一些。但是如果你真的要去找找哪些数据需要删除,哪些数据是业务数据不能动的时候,对着list tables;出来的几百几千张表也是很无从下手吧。对数据仓库做好分层,做好命名规范,对于每一层根据使用需要配置不同的生命周期回收策略,用一个好的数据管理来保证数据仓库的表的有序存储,不仅能节省一笔存储的钱,也能在实际使用的时候,快速找到需要的表,便于数据的管理和使用。而如果有一些计算过程产生的临时表,后续又确定用不到的,可以在计算结束及时删除。具体可以参考祎休写的基于阿里云数加的企业大数据仓库架构建设思路有比较详细的说明。

下载

下载数据并非全部都会收费的,有一些情况下数据下载也不会产生费用。合理利用这些规则,选择正确的下载方式就能减少下载的费用(而且下载不收费的方式也正好是下载最快的方式)。具体的规则可以参考文档。

另外下载的费用,还和下载的文件的大小有关系。通过合理的表结构设置和数据生成方式,把每次需要下载的数据放到一张表(或一个分区)里,减少下载量也是减少费用的一种策略。比如说需要下载3年级的学生信息的时候,下载全部的学生信息后再执行过滤,肯定比不过先根据年级对学生进行分区,然后只下载3年级的分区来的方法好。

计算

计算里需要注意的相对会多一些。不过我们还是先看看计算的费用和什么有关。先说I/O后付费,现在暂时还只是收取了SQL的费用,所以本文也只讲SQL的部分。看到SQL的费用是根据输入的数据量和SQL的算法复杂度有关的。

计算引擎在计算的时候,合理设置表的分区字段可以减少数据的输入量。关于分区可以参考这里。计算引擎在做执行计划解析的时候,如果发现查询过滤条件是用分区字段做过滤的时候,可以只读计算涉及的分区的数据,从而减少输入的数据量。

除了减少输入的数据量,减少计算复杂度也是一种方法。算法复杂度的优化一般涉及到代码层面的优化,而且有时候需要和业务结合起来。比如前面已经有过一些数据预处理知道本次计算的数据某个字段没有重复,那这次计算的时候就可以少加一次distinct或者group by。通过代码层面结合业务逻辑,一起优化SQL语句减少计算的复杂度,是减少计算费用的一种方法。

另外减少计算的次数也是一种方法。比如某几个计算都需要用到某个实时表的数据,而且都是在某种过滤和汇总之后的再加工,那完全可以把中间可以复用的计算过程保存下来,在数据仓库上做适量的轻度汇总甚至高度汇总。后续的计算可以拿汇总数据再做进一步的计算。这样虽然中间多存了一些数据,但是后续的计算的时候可以少算一些逻辑。这是数据仓库里经常用到的空间换时间的方法。配合之前提到的生命周期,可以用最小的存储费用的代价获得最大的计算费用的减少。当然合理利用这种方法,除了可以减少计算费用外,因为减少重复计算,也可以减少计算的时间提高效率。

除了以上提到的这些,也可以考虑后付费的方式来跑计算,也就是计算费用是包年包月的。一般来说,满足以下条件可以考虑使用后付费

任务大部分是周期任务,任务量比较均匀。如果任务以偶发性的临时查询为主可能不合适用后付费
任务的提交事件比较分散,如果都集中在某个时间点一起算的,也不太合适
经过一段时间的试运行,任务数量已经基本可以估计,不会短期内有比较的明显的增加或者减少
如果不满足这些 条件,者很容易出现在高峰期购买的CU不够用,任务出现排队;低谷的时候资源又利用不起来,造成浪费。

其他

关于费用,其实还有两个非常关键的问题

1.我每天都花了多少钱,如何优化?
可以参考这里,看看每天的账单,通过检查里面的计算、存储和下载分别产生了多少费用。从而从对应的角度去做优化。另外也可以在表格里做金额的排序,看看金额最高的几笔费用是什么费用,看看能否针对性做一些优化。

2.我这个SQL提交后会产生多少费用?
如果产生的费用都不清楚,那提交一个SQL时心里是没底的。在大数据开发套件的数据开发里,跑SQL会跳出消费提醒,从而提前知道提交后会产生的费用。如果发现金额特别高,可以考虑先做一些优化后再提交以免产生不必要的费用。如果是直接在MaxCompute客户端里跑SQL的话,可以用cost sql ;估算SQL的费用。

识别以下二维码,干货
图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机知识产权 教学目标,计算机教学设计模板

计算机教学设计模板计算机是现今学生们学习的一个重点,那么关于计算机的教学设计又应该怎么进行呢?下面就随小编一起去阅读计算机教学设计模板,相信能带给大家启发。第一篇:计算机教学设计模板【学习目标】了解计算机网络的发展,…

linux 环境 安装nginx

文章目录一、Nginx简介:1.1 Nginx是什么?1.2 能干什么?1.3 有什么特点?二、Nginx安装依赖环境2.1 安装gcc2.2 安装pcre2.3 安装zlib2.4 安装openssl2.5 综合命令安装(一步到位)三、下载/解压/安装NGINX3.1 在线下载nginx3.2 解压n…

行!这下 CSDN 玩大了!粉丝:太良心

CSDN从建立之初,我们的初心就是为了帮助广大开发者解决技术问题,成为大家最喜爱的技术社区。今年是CSDN的20周年,我们也为大家准备了一份良心礼物,可谓吐血操作。我们与AI博士唐宇迪 / Oracle认证讲师等4位讲师,共同为…

markdown html vue,vue项目引入markdown

npm install showdown接下来是用法:export default {data () {return {content:,converter:null}},watch:{content:contentChanged},mounted(){ this.init(); },methods: {init(){var showdown require(showdown);var converter new showdown.Converter();this.co…

厉害了!阿里安全图灵实验室在ICDAR2017 MLT竞赛刷新世界最好成绩

摘要: 近日,阿里安全图灵实验室(Alibaba Turing Lab)的ATL Cangjie OCR算法在ICDAR2017的MLT(Competition on Multi-lingual scene text detection)自然场景多语言文本检测竞赛中刷新了世界最好成绩&#x…

Spring Boot 一个依赖搞定 session 共享,没有比这更简单的方案了!

有的人可能会觉得题目有点夸张,其实不夸张,题目没有使用任何修辞手法!认真读完本文,你就知道gblfy说的是对的了! 文章目录一、背景二、分析思路三、实战1. 创建工程2. pom.xml3. redis配置4. 使用5. 项目打包6. 启动项…

孩子学计算机最佳年龄,孩子学编程最佳年龄是几岁

孩子学编程最佳年龄是几岁2021-01-18 16:58:11文/董玉莹孩子学习编程的最好是几岁?本文整理了相关内容,欢迎阅读。孩子学习编程的最好是几岁6-18岁!从国内外的典型案例来看6-18岁是孩子学习“编程”的最佳时机,这个阶段的孩子左右…

python画两条曲线_python – 在Matplotlib中绘制两个图之间的线

在许多情况下,来自其他答案的解决方案是次优的(因为只有在计算点之后没有对图进行任何更改时它们才有效). 更好的解决方案是使用专门设计的ConnectionPatch: import matplotlib.pyplot as plt from matplotlib.patches import ConnectionPatch import numpy as np f…

5G基站功耗,到底有多大?

戳蓝字“CSDN云计算”关注我们哦!作者 | 小枣君来源 | 鲜枣课堂前不久,从某运营商流出的一张图,在小枣君的朋友圈里被广泛传播。就是这张(点击可看放大观看):图中显示的,是该运营商在广州、深圳…

“前端+应用”两大监控利器商业化首发 ARMS领跑APM市场

摘要: 日前,阿里巴巴中间件(Aliware)旗下产品业务实时监控服务ARMS正式商用。首发商用的ARMS目前涵盖应用监控和前端监控两大功能。由此,ARMS的商业化正式填补了阿里云在APM(Application Performance Management)领域空…

Spring Boot2 整合 Shiro ,两种方式全总结!

前言:在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro。 文章目录一、Spring Security 和 Shiro 的比较二、原生的整合2.1. 创建一个 Spring Boot 项目…

html5 coverflow,使用FancyCoverFlow实现3D无限循环切换视图

FancyCoverFlow重写了gallery实现了画廊特效。这里记录下具体的使用方法:1 在布局文件中添加控件android:id"id/fancy_cover"android:layout_width"match_parent"android:layout_height"wrap_content"android:layout_marginTop"…

5G精华问答 | 5G关键技术解读

5G的概念虽然很早就已经提出,但是对于大多数用户来说,真正听到并且对5G有了初步的了解还是在今年。今天就让我们来看看关于5G的精华问答吧。1Q:5G标准是怎么来的,由谁制定的?A:5G是由“第三代合作伙伴计划组…

关于python的保留字_Python中的保留字

原博文 2020-01-29 20:03 − Python 包含的保留字可以执行如下命令进行查看: →import keyword →keyword.kwlist [False, None, True, and, as, assert, break, class, continue, d...01000 相关推荐 2019-09-28 21:13 − Python python是一种跨平台的计算机程序设…

Spring Boot2 整合 Ehcache

用惯了 Redis ,很多人已经忘记了还有另一个缓存方案 Ehcache ,是的,在 Redis 一统江湖的时代,Ehcache 渐渐有点没落了,不过,我们还是有必要了解下 Ehcache ,在有的场景下,我们还是会…

传奇谢幕,回顾霍金76载传奇人生

摘要: 根据外媒报道,著名物理学家斯蒂芬威廉霍金(Stephen William Hawking)去世,享年76岁,霍金的家人已经确认了这一消息。 原文地址:http://click.aliyun.com/m/43771/ “在爱因斯坦生日这天&a…

数据中台与苏秦挂六国相印

戳蓝字“CSDN云计算”关注我们哦!作者 | 一一来源 | 边缘计算社区阅读本文前先思考一个问题:数据中台如何创造更多价值?1梁宁看中台——什么是数据中台梁宁老师是阿里巴巴的湖畔大学产品模块学术主任、百度集团顾问。有人问梁宁,中…

python中函数定义_Python中函数的定义与使用

原博文 2020-02-27 16:46 − 一、函数基本定义 定义函数的目的是为了让一段代码可以被重复使用 函数定义的语法: def 函数名([参数,参数.....]): 函数主体代码(多行代码) [return [返回值]]注:函数中的函数体都通过缩进来定义 实例一&#xf…

非计算机专业教学改革,非计算机专业算法分析与设计教学改革论文

非计算机专业算法分析与设计教学改革论文【摘要】算法分析与设计不仅是计算机专业的核心课程,同时也是与计算机有关的非计算机专业的专业课。本人针对非计算机专业学生在学习过程中存在的若干问题,就教学内容、教学手段和考核方式等方面提出了改革措施。…

阿里SaaS性能测试平台PTS最佳实践

摘要: PTS(Performance Testing Service)是web化的卓越的SaaS性能测试平台,具备强大的分布式压测能力,可方便的模拟海量用户的真实业务场景。PTS铂金版在功能上强调页面可视化编排,目前也在快速迭代中&…