阿里云大数据利器Maxcompute学习之--分区表的使用

简介: 初学大数据Maxcompute时部分用户不是很熟悉Maxcompute分区表的概念和使用,那这篇文章来简单介绍下分区表的概念及使用场景。  实际上,分区在很多框架中都有这个概念,比如开源框架中的hive等。
初学大数据Maxcompute时部分用户不是很熟悉Maxcompute分区表的概念和使用,那这篇文章来简单介绍下分区表的概念及使用场景。
  实际上,分区在很多框架中都有这个概念,比如开源框架中的hive等。打个比喻,某城市粮仓里存放麦子,粮仓里按照县城分为很多区域,每个县城都有自己的一块地方,每个县城的麦子放在自己对应的区域上。如果上级领导来检查,想看某县城的麦子情况,那直接可以根据区域来迅速找到该县城的麦子。对应到Maxcompute分区表,粮仓相当于其中一张表,每个区域相当于以这个县城命名的分区。

一,分区表的概念
分区表指的是在创建表时指定分区空间,即指定表内的某几个字段作为分区列。在大多数情况下,用户可以将分区类比为文件系统下的目录。MaxCompute 将分区列的每个值作为一个分区(目录)。用户可以指定多级分区,即将表的多个字段作为表的分区,分区之间正如多级目录的关系。在使用数据时如果指定了需要访问的分区名称,则只会读取相应的分区,避免全表扫描,提高处理效率,降低费用。
使用示例:

建表: CREATE TABLE sd_data_test (
 userid STRING,
 shopid STRING,
 dtime DATETIME
)
PARTITIONED BY (
 part STRING,
 year STRING
)
LIFECYCLE 100000;

 
从其他表插入分区表:

insert into/overwrite table sd_data_test partition (part='450',year='2017') 
select xx, yy from sale_detail; 

 
查询:

select * from sd_data_test where part='543' AND year='2017'

 
这里查询的时候可以把分区字段当成普通字段来进行where条件的过滤。那插入后的数据是什么样子呢,可以在大数据开发套件中预览一下表结构




可以看到分区列相当于表中的字段,可以和表中的其他字段一样来使用。一般是放在where条件后抽取数据使用。
在表中实际的结构是什么样呢,其实分区相当于表中的子目录。那么如何查看呢,这里我使用odps的一个
eclipse插件下载表结构。安装eclipse插件可以参考https://help.aliyun.com/document_detail/27981.html?spm=5176.doc27800.6.756.04j9A9
调试代码时会下载表结构和小部分数据。sd_data_test的表结构如图:


  想必看到这个图就很清楚分区列和表字段的关系了。在查询的时候不会扫描全部表,而是去查某个分区目录下的数据,可以有效的提高查询效率。

二,静态分区,动态分区
静态分区和动态分区是对应的。所谓静态分区就是指在插入分区表的时候要指定分区值,比如上面例子

insert into/overwrite table sd_data_test partition (part='450',year='2017') 

 

这里指定的part和year的值,插入之前要指定具体的分区值。动态分区在插入前时候不指定,插入时指定源表的一个字段(多级分区指定多个),那么在插入的时候相同的字段值会自动创建成一个分区。

下面就介绍下动态分区具体的用法,假设一个场景用户有一年12个月的中国各个省份的数据资料。那想对这个表的数据进行分区,静态分区比较繁琐,可以使用动态分区。
假设 A表是源表非分区表,B表是分区表

CREATE TABLE A (
mon STRING,
pro STRING,
aa DATETIME,
bb STRING, cc STRING, dd STRING )

CREATE TABLE B(
xx1 STRING,
xx2 STRING,
xx3 DATETIME, xx4 STRING) PARTITIONED BY (month STRING,province STRING ) 动态插入,在select中指定按照哪两个字段(因为对应的分区列有两个)进行动态分区 。 insert into table B partition(month,province)select aa,bb,cc,dd,mon,pro from A mon,pro两个字段是动态分区的时候按照这两个字段进行分区,当然也可以按照一个分区列进行分区,但必须指定前面的高级分区列
例如 insert into table B partition(month=‘12’,province)select aa,bb,cc,dd, from A

三,odps分区的一些注意事项:

  • 目前,在使用动态分区功能的SQL中,在分布式环境下,单个进程最多只能输出512个动态分区,否则引发运行时异常;
  • 在现阶段,任意动态分区SQL不允许生成超过2000个动态分区,否则引发运行时异常;
  • 动态生成的分区值不允许为NULL,也不支持含有特殊字符和中文,否则会引发异常,如:“FAILED: ODPS-0123031:Partition exception - invalid dynamic partition value: province=xxx”;
  • 如果目标表有多级分区,在运行insert语句时允许指定部分分区为静态,但是静态分区必须是高级分区;

还有一点就是如果动态分区,来源表数据量非常大并且分区字段数据分布不均匀容易产生数据倾斜问题,建议先做好规划,比如先将数据量非常大的那个分区值过滤随后静态分区单独插入。

总结:合理设置分区,可以大幅度提高查询速度降低使用费用,因为Maxcompute收费一部分来源于sql计算,设置分区表在计算时指定计算的分区,参与计算的数据不会扫描全表而是指定的部分分区表数据。
另外从计算性能上来说,如果分区数据过多了也会适得其反影响性能,甚至会超出Maxcompute的限制。所以合理使用分区表会给计算业务带来很好的优化效果。

 


有对大数据技术感兴趣的,可以加笔者的微信 wx4085116.目前笔者已经从阿里离职,博客不代表阿里立场。笔者开了一个大数据培训班。有兴趣的加我。


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
4天前
|
分布式计算 DataWorks 大数据
MaxCompute产品使用合集之大数据计算MaxCompute如何实现通过离线同步脚本模式
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4天前
|
分布式计算 大数据 BI
MaxCompute产品使用合集之MaxCompute项目的数据是否可以被接入到阿里云的Quick BI中
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4天前
|
机器学习/深度学习 分布式计算 大数据
MaxCompute产品使用合集之大数据计算MaxCompute是否支持直接在多个节点之间进行批量复制
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
MaxCompute产品使用合集之大数据计算MaxCompute是否支持直接在多个节点之间进行批量复制
|
4天前
|
分布式计算 运维 DataWorks
MaxCompute产品使用合集之大数据计算MaxCompute对于某个特定表该怎么获取,特定分区的instances id
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4天前
|
分布式计算 DataWorks Java
DataWorks产品使用合集之阿里云DataWorks专有云环境下,上传MaxCompute的UDF(用户自定义函数)的JAR包的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
22 0
|
4天前
|
分布式计算 大数据 调度
MaxCompute产品使用合集之大数据计算MaxCompute底层加速查询的原理是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4天前
|
弹性计算 运维 监控
解密阿里云弹性计算:探索云服务器ECS的核心功能
阿里云ECS是核心计算服务,提供弹性云服务器资源,支持实例按需配置、集群管理和监控,集成安全防护,确保服务稳定、安全,助力高效业务运营。
83 0
|
4天前
|
存储 弹性计算 固态存储
阿里云服务器CPU内存配置详细指南,如何选择合适云服务器配置?
阿里云服务器配置选择涉及CPU、内存、公网带宽和磁盘。个人开发者或中小企业推荐使用轻量应用服务器或ECS经济型e实例,如2核2G3M配置,适合低流量网站。企业用户则应选择企业级独享型ECS,如通用算力型u1、计算型c7或通用型g7,至少2核4G配置,公网带宽建议5M,系统盘可选SSD或ESSD云盘。选择时考虑实际应用需求和性能稳定性。
149 6
|
4天前
|
域名解析 弹性计算 Linux
阿里云购买云服务器、注册域名、备案及绑定图文教程参考
本文为大家介绍了2024年购买阿里云服务器和注册域名,绑定以及备案的教程,适合需要在阿里云购买云服务器、注册域名并备案的用户参考,新手用户可通过此文您了解在从购买云服务器到完成备案的流程。
阿里云购买云服务器、注册域名、备案及绑定图文教程参考
|
2天前
|
存储 安全 数据库
阿里云服务器计算型、通用型、内存型主要实例规格特点、适用场景及最新价格参考
在阿里云服务器的实例规格中,有共享型也有企业型,一般用户选择较多的企业级实例规格有计算型、通用型、内存型,每一种实例规格又有多个实例规格族可选,不同的云服务器实例规格在架构、计算、存储、网络、安全等方面有着不同,因此,其适用场景也有所不同。本文来详细介绍一下阿里云服务器计算型、通用型、内存型主要实例计算、存储等性能及其适用场景,以供参考。
阿里云服务器计算型、通用型、内存型主要实例规格特点、适用场景及最新价格参考

热门文章

最新文章