MaxCompute分区表和非分区表使用对比

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 本文我们将通过对有同样数据量、表结构除分区列其他都一模一样的表,从查询计算、写入、删除数据几个简单操作进行对比,了解MaxCompute分区表和非分区表在使用上有什么差异。 在介绍之前,需要大家先了解MaxCompute分区的概念。

本文我们将通过对有同样数据量、表结构除分区列其他都一模一样的表,从查询计算、写入、删除数据几个简单操作进行对比,了解MaxCompute分区表和非分区表在使用上有什么差异。

在介绍之前,需要大家先了解MaxCompute分区的概念

数据准备

分区表:公共数据集中的表dwd_prouduct_house_basic_info_out(二手房产数据集);

非分区表:执行建表语句:

create table dwd_prouduct_house_basic_info_out_npt as select * from public_data.dwd_prouduct_house_basic_info_out;
    

创建表的同时将源表的所有数据都复制到新表dwd_prouduct_house_basic_info_out_npt中。
由于create table … as select … 语句创建的表不会复制分区属性,只会把源表的分区列作为目标表的一般列处理,所以新表dwd_prouduct_house_basic_info_out_npt为非分区表。

可以分别执行select count(*) from public_data.dwd_prouduct_house_basic_info_out;select count(*) from dwd_prouduct_house_basic_info_out_npt;查看这两个表的记录数会是一样。

本次操作表的记录数为1147676063条。

计算对比

我们执行一个简单的查询某个分区数据的job:

Select * from public_data.dwd_prouduct_house_basic_info_out where ds= '20170113';--分区表查询
Select * from dwd_prouduct_house_basic_info_out_npt where ds= '20170113';--非分区表查询

计算时长对比

计算资源充足的情况下进行操作。

  • 分区表里查询使用时间1秒,:

    ![image](https://yqfile.alicdn.com/f0b14b6c41c665568e53cff9ce2bf01fd29ae212.png)
    
    直接在对应分区中取出该分区所有数据。
    
  • 非分区里表查询:

    加上job等待时间共1分15秒
    ![image](https://yqfile.alicdn.com/470444f8b68cf80ce9d4e11e48f59a5b5f17c549.png)
    真正执行时长53秒
    ![image](https://yqfile.alicdn.com/cf8dfc1ef56a50b6be4eeda8055491cea96f9530.png)
    
    需要在整个表1147676063条记录中取出满足条件的数据。
    ![image](https://yqfile.alicdn.com/157dad8d5793761cbaa95e30d8cc340f23e0bccc.png)
    

计算费用对比

我们可以直接通过大数据开发套件->“数据开发”工作区中的“成本估计”对两条查询语句进行费用预估,该预估功能采用的计费公式可参考“[计量计费->I/O后付费](https://help.aliyun.com/document_detail/27989.html
)”。

若采用计算预付费模式,可不用在意该计算费用。

下图是通过成本估计功能预估的费用,结果显示在非分区表中查询一样条件的数据会花费更多,当然最终花费还得看最后的账单。

image

table size对比

由于MaxCompute存储压缩比不一定完全一致,两个表数据在MaxCompute的size也会有一定的差异。

desc public_data.dwd_prouduct_house_basic_info_out; 分区表执行结果如下图:

image

desc dwd_prouduct_house_basic_info_out_npt; 非分区表执行结果如下图:

image

写入对比

创建三个表,表结构除了分区列,其他都一致:

  • 非分区表,

    create  table   house_test_npt(house_id string  , house_total_price string , house_unit_price string , house_type string , house_floor string , house_direction string , house_deckoration string , house_area string , house_community_name string , house_region string  , house_city string, ds string)
    
  • 以时间为分区的分区表

    create  table   house_test_pt_1(house_id string  , house_total_price string , house_unit_price string , house_type string , house_floor string , house_direction string , house_deckoration string , house_area string , house_community_name string , house_region string  , house_city string ) partitioned by ( ds string)
    
  • 以时间为一级分区,城市为二级分区的分区表

    create  table   house_test_pt(house_id string  , house_total_price string , house_unit_price string , house_type string , house_floor string , house_direction string , house_deckoration string , house_area string , house_community_name string , house_region string ) partitioned by (ds string , house_city string)
    

分别执行3个insert语句,源表取一模一样的数据,即select分句一模一样:

insert overwrite table house_test_npt select house_id,house_total_price,house_unit_price,house_type,house_floor,house_direction,house_deckoration,house_area,house_community_name,house_region,house_city,ds from public_data.dwd_prouduct_house_basic_info_out where ds ='20170114';--写入非分区表

insert overwrite table house_test_pt_1 partition (ds='20170114') select house_id,house_total_price,house_unit_price,house_type,house_floor,house_direction,house_deckoration,house_area,house_community_name,house_region,house_city from public_data.dwd_prouduct_house_basic_info_out where ds ='20170114';--写入一级分区表

insert overwrite table house_test_pt partition (ds='20170114',house_city) select house_id,house_total_price,house_unit_price,house_type,house_floor,house_direction,house_deckoration,house_area,house_community_name,house_region,house_city from public_data.dwd_prouduct_house_basic_info_out where ds ='20170114';--使用动态分区方式写入二级分区表

对比执行过程:

  • 非分区表,一个task,耗时41s:

    ![image](https://yqfile.alicdn.com/d1ac9fe2ebcfc6c664a872a20490d937ffb2391a.png)
    
  • 一级分区表,一个task,耗时41s:

    ![image](https://yqfile.alicdn.com/6e3ef3aa8672220c78f7d5ca708a4784b9458011.png)
    
  • 二级分区表,第二级分区值为动态输入,2个task,最长task耗时1分31秒:

    ![image](https://yqfile.alicdn.com/359afdc276eb8b2d3552e79649204048a9309b2c.png)
    

数据删除操作对比

假设要删除表某一天的数据,由于MaxCompute不支持delete语法,我们需要通过别的方式进行数据删除。

  • 分区表只需要通过alter语句drop对应分区即可,如下删除分区为20170112的数据:

    ALTER TABLE public_data.ods_enterprise_share_basic DROP IF EXISTS PARTITION (ds='20170112');
    
  • 非分区表,需要将不需要删除的数据查询出来并覆盖写入方式写回表中,增加了计算量。

    INSERT OVERWRITE TABLE dwd_prouduct_house_basic_info_out_npt SELECT * FROM dwd_prouduct_house_basic_info_out_npt WHERE ds<>'20170112';
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
5月前
|
分布式计算 DataWorks 安全
DataWorks产品使用合集之将多业务分表同步到odps的一个三级分区表中,每级分区怎么赋值
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
44 4
|
4月前
|
分布式计算 DataWorks 关系型数据库
MaxCompute产品使用合集之如何在DataWorks中实现离线同步多个分表到MC的多级分区表
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之当需要将数据从ODPS同步到RDS,且ODPS表是二级分区表时,如何同步所有二级分区的数据
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
59 7
|
5月前
|
存储 分布式计算 大数据
MaxCompute产品使用合集之是否支持创建OSS外部表为分区表,并访问OSS上以分区方式存储的数据
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
机器学习/深度学习 分布式计算 DataWorks
MaxCompute产品使用合集之如何对分区表进行合并小文件操作
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
分布式计算 DataWorks 监控
MaxCompute产品使用问题之如何将MaxCompute中的数据同步到ClickHouse的分区表中
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
机器学习/深度学习 分布式计算 大数据
MaxCompute产品使用问题之如何对现有的非分区表数据进行分区处理
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
分布式计算 大数据 数据处理
MaxCompute操作报错合集之在本地用tunnel命令上传excel表格到mc遇到报错: tunnel upload C:\Users***\Desktop\a.xlsx mc里的非分区表名 -s false;该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
6月前
|
分布式计算 大数据 数据库连接
MaxCompute产品使用合集之怎么将事务表改为普通分区表
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
分布式计算 MaxCompute
MaxCompute查看分区表某个分区生成时间
MaxCompute查看分区表某个分区生成时间
MaxCompute查看分区表某个分区生成时间

相关产品

  • 云原生大数据计算服务 MaxCompute