快速入门
MaxCompute 基础 SQL 操作以及常用功能相关问题
1. 新创建的工作空间。怎么不支持数据类型自动隐式转换呢?
看下是否开启了 MaxCompute2.0,可以关闭 2.0 之后可进行隐式转换。 具体可参考官方文档。
2. 在 MaxCompute 中的创建表的方式有哪些?
在 MaxCompute 中的创建表的方式有以下几种:通过 MaxCompute 客户端(odpscmd)常用命令实现。
通过 MaxCompute Studio 实现,详情请参见可视化创建/修改/删除表。
通过 DataWorks 实现,详情请参见表管理。
通过 SDK 接口创建表。
3. 创建和查看表的前提条件有哪些?
请确保以下工作已经完成:开通阿里云账号,购买MaxCompute。 创建要使用的项目空间,详情请参见创建空间。如果要使用的项目空间已存在,请确保已被添加至此项目空间并被赋予建表等权限。
4. 如何使用 Tunnel 命令导入数据?
可以使用 tunnel upload 命令上传数据至 MaxCompute 表,每一次上传只支持数据上传到一张表或表的一个分区。具体可以参考官方文档。
5. 其它导入方式有哪些?
除了通过 MaxCompute 客户端(odpscmd)导入数据,您也可以使用 MaxCompute Studio、Tunnel SDK、数据集成、开源的 Sqoop、Fluentd、Flume、LogStash等工具将数据导入到 MaxCompute,
详情请参见数据上云工具介绍。
6. MaxCompute支持什么方式运行 SQL 语句?
MaxCompute 支持使用DataWorks、odpscmd、SDK、JDBC 等方式提交 SQL。
7. MaxCompute目前支持的 SQL 语法有哪些?
MaxCompute SQL 采用的是类似于 SQL 的语法。它的语法是标准语法 ANSI SQL92 的一个子集,并有自己的扩展。具体可以参考官方文档。
8. 如何使用临时查询运行 SQL 语句?
如果您已经创建了 MaxCompute 项目(DataWorks 工作空间),可以直接使用 DataWorks 临时查询功能,快速运行 SQL 语句操作 MaxCompute。
9. 复杂数据类型有哪些?
MaxCompute2.0 支持的复杂数据类型如下:
类型 |
定义方法 |
构造方法 |
ARRAY |
array<int> array<struct<a:int, b: string>> |
array(1, 2, 3) array(array(1, 2), array(3, 4)) |
类型 |
定义方法 |
构造方法 |
MAP |
map<string, string> map<smallint, array <string>> |
map(“k1”, “v1”, “k2”, “v2”) map(1S, array(‘a’, ‘b’), 2S, array(‘x’, ‘y’)) |
STRUCT |
struct<x:int, y:int> struct<field1:bigint, f ield2:array<int>, fiel d3:map<int, int>> |
named_struct(‘x’, 1, ‘y’, 2) named_struct(‘field1’, 100L, ‘field2’, array(1, 2), ‘field3’, map(1, 100, 2, 200)) |
10. 如何使用 Drop Table?
命令格式 DROP TABLE [IF EXISTS] table_name;
功能说明 删除一张表。 如果不指定 IF EXISTS 选项而表不存在,则返回异常;如果指定此选项,无论表是否存在,均返回成功。
示例 --删除表 sale_detail。如果表存在,返回成功。 DROP TABLE sale_detail; --删除表 sale_detail。无论 sale_detail 表是否存在,均返回成功。
11. 如何查看表信息?
12. 如何使用 Show Tables 和 Show Tables like?
命令格式 SHOW TABLES; SHOW TABLES like 'chart';
功能说明 SHOW TABLES:列出当前项目空间下所有的表。
SHOW TABLES like 'chart':列出当前项目空间下表名与'chart'匹配上的表,支持正则表达式。
可以用通配符*,例如:show tables '*abc*'
13. 如何进行 Hadoop 数据迁移?
可以使用 MMA 和 DataWorks 数据集成进行数据迁移。
14. 下载 Instance 数据方式有哪些?
方式一:使用 tunnel download 命令将特定 Instance 的执行结果下载到本地文件。
方式二:通过配置参数使 SQL 查询默认采用 InstanceTunnel 方式输出执行结果。 在 MaxComput e 客户端中打开 use_instance_tunnel 选项后,执行的 SELECT 查询会默认使用 InstanceTunnel 来下载结果,从而避免在 MaxCompute 平台获取 SQL 查询结果时所遇到的获取数据超时和获取数据量受限的问题。
打开该配置方法: 在最新版本的客户端中,odps_config.ini文件里已经默认打开此选项,并且 instance_tunnel_max_record 被默认设置成了 10000。
15. UDF分类有哪些?
广义的 UDF 定义是自定义标量函数(UDF)、自定义表值函数(UDTF)及自定义聚合函数(UDAF)三种类型的自定义函数的集合。狭义的 UDF 仅代表用户自定义标量函数。MaxCompute UDF 支持的自定义函数类型如下。
自定义函数类型 |
名称 |
应用场景 |
User Defined Scalar Functio n。用户自定义标量函数。 |
适用于一进一出业务场景。即其输入与输出是一对一的关系,读入一行数据,输出一个值。 |
|
自定义函数类型 |
名称 |
应用场景 |
User Defined Table Valued Function。用户自定义表值函数,又称表格 UDF。 |
适用于一进多出业务场景。即其输入与输出是一对多的关系,读入一行数据,输出多个值可视为一张表。 |
|
User Defined Aggregation Fu nction。用户自定义聚合函数。 |
适用于多进一出业务场景。即其输入与输出是多对一的关系,将多条输入记录聚合成一个输出值。 |
16. MaxCompute Spark 有哪些使用限制?
目前 MaxCompute Spark 支持以下使用场景:Java/Scala 所有离线场景,GraphX、Mllib、RDD、Spark-SQL、PySpark 等。 读写 MaxCompute Table。OSS 非结构化存储支持。暂不支持以下场景:读写 VPC 环境下的服务,如 RDS、Redis、ECS 上部署的服务等。Streaming 场景。交互式类需求,
Spark-Shell、Spark-SQL-Shell、PySpark-Shell 等。按量计费开发者版资源仅支持 MaxComputeSQL(支持使用 UDF)、PyODPS 作业任务,暂不支持 MapReduce、Spark 等其它任务。
17. MaxCompute误删除表数据如何恢复?
MaxCompute 提供数据备份与恢复功能,系统会自动备份数据的历史版本(例如被删除或修改前的数据)并保留一定时间,您可以对保留周期内的数据进行快速恢复,避免因误操作丢失数据。可以参考官网文档。
18. MaxCompute查询加速 MCQA 只能支持标准模式吗?
当前 MaxCompute 查询加速(MCQA)功能支持按量付费、包年包月两种付费模式。工作空间的简单模式、标准模式都支持。具体可参考官方文档。
19. 在 DataWorks 表管理中添加的表,修改字段名称报错。
可以使用 DDL 语句 ALTER TABLE 修改。可以参考官方文档。
20. 不同工作空间的表是否可以相互引用?
MaxCompute 提供了 ACL(基于对象)、跨项目数据分享和项目数据保护等多种授权方式。可参考官方文档。