MaxCompute Information Schema功能详解

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 阿里云的技术专家为大家带来MaxCompute新功能Information Schema的详细介绍。内容包括Information Schema的简介,安装,使用场景,以及对此新功能的使用建议。

精彩视频回顾请点击:MaxCompute Information Schema 详解

以下为精彩视频内容整理:
1.Information Schema简介;
2.Information Schema安装使用;
3.Information Schema常用场景;
4.Information Schema使用建议。

一、Information Schema简介

(一)背景

MaxCompute是一种快速、完全托管的PB/EB级数据仓库解决方案。用户结构化的数据在MaxCompute中以行-列表的的形式存储,每天有千万级别的作业对这些表进行操作,同时有丰富完整的权限控制体系对这些资源访问进行约束控制。为了满足这些海量对象以及对象之间关系的管理、分析需求,MaxCompute提供了开放的元数据服务Information Schema。通过Information Schema用户可以对MaxCompute中管理的对象使用SQL进行全局分析,可以分析用户数据访问行为等,也可以利用这些数据构建自己的内部的元数据管理系统。
MaxCompute的Information Schema提供了项目元数据及使用历史数据等信息。在ANSI SQL-92的Information Schema基础上,添加了面向MaxCompute服务特有的字段及视图。包含了22张视图,其中20张是基础对象及对象关系视图,2张是历史记录数据。

(二)数据产出

产出方式周期性离线+实时在线结合的方式进行数据产出。产出流程涉及多个系统,数据是存储在ODPS系统上确保数据可靠性。通过ODPS package+view的机制提供给用户,视图是project级别的。information schema数据安全依托ODPS已有的成熟安全机制。数据覆盖面广,对象关系进行展开,使用方便简单。

图片 1.png

(三)Package+View机制
(1)什么是view

基于 SQL 语句的结果集的可视化的表,包含行和列就像一个真实的表。通过视图我们可以向用户选择性、稳定地提供数据,隐藏复杂的实现细节。

(2)什么是PACKAGE

Package是一种跨项目空间共享数据及资源的机制,我们可以把资源放到package中打包一起共享给其他project使用,相当于功能包。

(3)为什么要用PACKAGE

第一,共享简单,管理方便。不需要逐张view进行授权,后续对InformationSchema内容不需要额外授权操作。第二,安全,不需要管理庞大的用户,只需要对project进行授权。只需要授权project安装后,由project owner管理project内部谁能访问。

(四)视图信息

在上文中提到,InformationSchema包含了22张视图,其中20张是基础对象及对象关系视图,2张是历史记录数据。如下图所示,列出了这22张表,它们大概可以分为四类,其中只有历史数据表是带有分区字段ds,其他都为非分区表。
2.png

二、Information Schema安装使用

(一)安装

使用odpscmd或者DataWorks,注意需要PROJECT OWNER/SUPER ADMIN权限的执行。

3.png

如果需要project里面其他非project owner、super admin能使用information schema,可以通过ACL或者policy授权。
4.png

第一次使用时候由于字段不对,类型不对或者没有目标表权限等等会出现类似如下错误。
FAILED: No 'Read' permission for entity 'projects/information_schema/registration/functions/udf_unixtime2str': Authorization Failed [4002], You don't exist in project information_schema. Context ID:353dbeb8-9798-4a3f-8c9f-c5aa0faed66f. --->Tips: CurrentProject:lightning; Pricipal:ALIYUN$shujia_demo@aliyun-inner.com; No permission 'odps:Read' on resouce acs:odps:*:projects/information_schema/registration/functions/udf_unixtime2str

从query可能看不出来什么,有时候用户就是insert overwrite table xxx select * from information_schema.tasks_history。

Q:为什么只是访问information_schema所有表出错?
A:因为部分视图使用了udf,也有用户部分表的schema是对的,比如只有history表带有分区ds字段,其他表是没有的。

(二)使用限制

(1)Information Schema提供的是当前项目的元数据视图,不支持跨项目的元数据访问。如果需要对多个项目的元数据进行统一查询、分析,需要分别获取各个项目中的元数据并整合在一起进行跨项目元数据分析。

(2)元数据系统表目前提供视图有一定时延,对元数据时效性要求较高的应用,建议使用SDK/CLI直接获取指定对象的元数据。

(3)历史数据视图目前只提供14天数据,其他数据为最近产出副本,如果需要长期分析,需要定期导出到用户空间。

(4)视图数据不支持tunnel等拷贝,需要执行odps sql。

三、InformationSchema常用场景

在上文中提到,InformationSchema包含了22张视图,下面对其中一部分视图的常用场景分别作介绍。

(一)TABLES、PARTITIONS

5.png

6.png

(二)TASKS_HISTORY

7.png

8.png

9.png

(三)TUNNELS_HISTORY

10.png

(四)其它常用场景

11.png

12.png

四、Information Schema使用建议

(一)禁止掉SQL 1.0回退set odps.sql.planner.mode=lot;

(二)adhoc查询历史表使用时候加上分区限制避免扫描所有的分区,如果是查询昨天以及之前的数据会更快,因为历史表是历史数据和当天实时数据的聚合,历史数据会定期进行range cluster,进行过滤时候扫描量更小。

(三)定期dump时候不要将时间刚刚好设置为0点,因为产出时间是有一定的延迟,可以考虑设置晚几十分钟。

(四)多个project数据时候可以通过设置二级分区(string ds, string project),每个项目insert overwrite到自己分区,查询时候可以通过指定ds查询主账号下project数据。

(五)尽量不要用select* , 类似insert into table xxxx select * from information_schema.tables,因为视图可能会在尾部进行字段扩展。

(六)使用权限表时候查询用户权限时候注意不要遗漏“all”,对应权限*,比如查询用户drop权限时候,过滤列表除了drop还要含有all。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
22天前
|
缓存 分布式计算 NoSQL
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
22 2
|
22天前
|
SQL 分布式计算 NoSQL
大数据-42 Redis 功能扩展 发布/订阅模式 事务相关的内容 Redis弱事务
大数据-42 Redis 功能扩展 发布/订阅模式 事务相关的内容 Redis弱事务
22 2
|
3月前
|
机器学习/深度学习 搜索推荐 算法
飞天大数据平台产品问题之AIRec在阿里巴巴飞天大数据平台中的功能如何解决
飞天大数据平台产品问题之AIRec在阿里巴巴飞天大数据平台中的功能如何解决
|
4月前
|
分布式计算 大数据 关系型数据库
MaxCompute产品使用合集之如何实现类似mysql实例中的数据库功能
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4月前
|
JSON 分布式计算 大数据
MaxCompute产品使用合集之使用数据服务功能,但发现ODPS数据源不支持,该如何解决
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4月前
|
SQL 分布式计算 DataWorks
MaxCompute产品使用合集之整库离线同步至MC的配置中,是否可以清除原表所有分区数据的功能
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4月前
|
分布式计算 大数据 MaxCompute
MaxCompute产品使用合集之如何实现根据商品维度统计每件商品的断货时长的功能
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4月前
|
分布式计算 DataWorks 大数据
MaxCompute产品使用合集之如何实现类似for循环的功能
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4月前
|
存储 分布式计算 资源调度
ODPS SQL问题之ODPS逻辑层包含哪些角色,它们各自的功能是什么
ODPS SQL 问题之ODPS逻辑层包含哪些角色,它们各自的功能是什么
|
4月前
|
分布式计算 自然语言处理 DataWorks
MaxCompute产品使用合集之在DataWorks中,当涉及到MC的投递功能时,所指的自定义RAM角色是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。

相关产品

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