MaxCompute支持使用外部表功能查询和分析存储于OSS等外部存储系统的数据。该机制使得用户可以无需将数据导入到MaxCompute内部存储,直接对外部数据进行操作,从而提供了数据处理的灵活性和方便性。
背景信息
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提供了外部表来解决上述问题。外部表的功能旨在提供除MaxCompute内部表以外的其他数据的处理能力。通过一条简单的DDL语句,即可在MaxCompute上创建一张外部表,建立MaxCompute表与外部数据源的关联,提供各种数据的接入和输出能力。创建好的外部表可以像普通的MaxCompute表一样使用(大部分场景),充分利用MaxCompute SQL的强大计算功能。
使用外部表功能时,外部表的数据不会复制一份存在MaxCompute上并产生存储费用。
外部表支持全量搜索。
Tunnel功能及Tunnel SDK当前不支持外部表操作。您可以通过Tunnel直接上传数据到MaxCompute内部表,或者是通过OSS Python SDK上传到OSS后,在MaxCompute使用外部表做映射。
您可以通过DataWorks配合MaxCompute对外部表进行可视化的创建、搜索、查询、配置、加工和分析。详情请参见外部表。
外部表在MaxCompute侧只会产生计算费用,遵循MaxCompute计算资源计费规则。外部表的数据不会存储在MaxCompute,所以在MaxCompute不会有存储费用,存储费用请关注数据源存储侧计费规则。在使用公网MaxCompute Endpoint连接外部表时,会产生公网流量费和下载费用。MaxCompute费用详情请参见计费项与计费方式概述。
使用MaxCompute外部表访问外部数据源时,外部数据源可能会产生计算、访问、数据传输等费用,具体以外部数据源计费方式为准,请关注相应产品的说明。
外部表示例
您可以通过以下示例,深入了解通过MaxCompute外部表功能处理各种非结构化数据的方法:
访问OSS和TableStore(OTS)非结构化数据,请参见访问OSS非结构化数据和访问OTS非结构化数据。
外部表访问OSS的账号,在RAM中自定义授权MaxCompute访问OSS的权限,请参见STS模式授权。
MaxCompute的非结构化框架支持通过INSERT方式将MaxCompute的数据直接输出到OSS,请参见将数据写入OSS。
处理各种开源格式数据,请参见支持开源格式数据。
相关文档
MaxCompute支持OSS、Hologres及RDS等多种外部表,具体请参见OSS外部表、Tablestore外部表、Hologres外部表、RDS外部表、Paimon外部表。
外部表的常见问题及解决方式请参见外部表常见问题。