MaxCompute作为阿里云大数据平台的核心计算组件,拥有强大的计算能力。MaxCompute能够调度大量的节点做并行计算,同时对分布式计算中的failover、重试等功能都有体系化的处理管理机制。

外部表产生背景

MaxCompute SQL作为分布式数据处理的主要入口,可实现EB级别的离线数据的快速处理和存储。随着大数据业务的不断扩展,新的数据使用场景在不断产生,MaxCompute计算框架也在不断的演化。MaxCompute原来主要面对内部特殊格式数据的强大计算能力,正一步步的开放给不同的外部数据。

现阶段MaxCompute SQL处理的主要是以cfile列格式存储在内部MaxCompute表格中的结构化数据。对于 MaxCompute表外的各种用户数据(包括文本以及各种非结构化的数据),您需要通过不同工具导入MaxCompute表再进行计算。以OSS为例,如果您需要在MaxCompute中处理OSS上的数据,通常有以下两种方式:
  • 通过OSS SDK或者其他工具从OSS下载数据,然后再通过MaxCompute Tunnel将数据导入表里。
  • 编写UDF,在UDF里直接调用OSS SDK访问OSS数据。
但这两种做法都有不足之处:
  • 第一种需要在MaxCompute系统外部做一次中转,如果OSS数据量太大,还需要考虑如何并发来加速,无法充分利用 MaxCompute大规模计算的能力。
  • 第二种通常需要申请UDF网络访问权限,还需要开发者自己控制作业并发数,解决数据如何分片的问题。

本节将介绍的外部表的功能,旨在提供除MaxCompute内部表格以外的其他数据的处理能力。在这个框架中,通过一条简单的DDL语句,即可在MaxCompute上创建一张外部表,建立MaxCompute表与外部数据源的关联,提供各种数据的接入和输出能力。创建好的外部表可以像普通的MaxCompute表一样使用(大部分场景),充分利用MaxCompute SQL的强大计算功能。

说明
  • 使用外部表功能,外部表的数据不会复制一份放在MaxCompute并带来存储费用。
  • 外部表当前仅支持全量搜索,不支持列剪裁。
  • Tunnel功能及Tunnel SDK当前不支持外部表操作。您可以通过Tunnel直接上传数据到MaxCompute内部表,或者是通过OSS Python SDK上传到OSS后,在MaxCompute使用外部表做映射。

外部表示例

您可以通过以下示例,深入了解通过MaxCompute外部表功能处理各种非结构化数据的方法: