外部表概述

更新时间:
复制为 MD 格式

MaxCompute支持使用外部表功能查询和分析存储于OSS等外部存储系统的数据。

功能介绍

MaxCompute SQL作为分布式数据处理的主要入口,可实现EB级别离线数据的快速处理。随着大数据业务的不断扩展,新的数据使用场景在不断产生,很多数据集中在湖上、实时数仓中、NoSQL数据库中或其他系统里。

MaxCompute不仅适用于数据仓库场景,同时也由于底层采用了大数据分布式存储和计算架构,其容量、计算吞吐效率、多引擎能力和开放性也适用数据湖场景。因此,面对外部数据计算场景,存在两种主要模式:

  • 模式一:先导入再计算

    将数据导入MaxCompute。结构化数据以表形态支持SQL计算或对三方引擎提供开放能力,非结构化数据也可以存入MaxCompute并计算。在MaxCompute中可以获得更高的数据读写效率和更一体化的体验。

  • 模式二:直接在外部计算

    当需要基于数据湖构建更灵活的数据体系时,MaxCompute SQL也可作为计算引擎在数仓外部计算。

MaxCompute提供面对数仓强管理体系下的计算能力,同时也能够对接外部存储数据的系统和管理体系。而最直接访问外部数据的功能是外部表

  • 定义与原理

    • 通过DDL语句定义MaxCompute访问外部数据的表名、schema、表属性、权限、位置和协议等信息,记录在MaxCompute元数据中。

    • SQL就可以按照外部表的元数据信息,根据不同的外部表格式采用对应的方法建立与外部数据源的联系,包括获取或更新外部数据的元信息,提供各种数据的读取、计算和写出能力。

  • 主要应用场景

    基于外部表,可以实现直接计算MaxCompute外部的数据,也可以在MaxCompute的管理范围管理外部数据源,并在约定的管理体系下使用数据。例如:湖上结构化或非结构化数据批处理、数据共享交换及实时数仓数据归档入数仓模型等

计费说明

  1. 存储费用

    • 结论:不产生任何存储费用。

    • 原因:用外部表功能时,外部表的数据不会复制后存储在MaxCompute,外部表的数据存储于外部系统,MaxCompute不收取数仓侧的存储费用,存储成本请关注数据源自身的计费规则。

  2. 计算费用
    计算费用遵循MaxCompute的计算资源计费规则,具体分为以下几种模式:

    • 对于包年包月或弹性预留CU资源:

      • 外部表的计算费用已包含在预付费的计算资源费用中。

    • 对于按量付费模式:

      • 计费部分:目前仅统计计算任务访问OSSOTS的扫描数据量。

      • 暂不计费部分:访问 HDFS、Hologres、RDS、HBase、Lindorm 等(无论是通过外部表还是湖仓一体2.0的外部Schema方式),暂时不统计扫描数据量,也暂不产生计算费用。

  3. 网络费用

    当使用公网MaxCompute Endpoint连接外部表时,会产生公网流量费和下载费用。MaxCompute费用详情请参见计费项与计费方式

  4. 外部数据源侧费用提醒

    使用MaxCompute外部表访问外部数据源时,外部数据源可能会产生计算、访问、数据传输等费用,具体以外部数据源计费方式为准,请关注相应产品的说明。

适用范围

  • Tunnel功能及Tunnel SDK当前不支持外部表操作。可以通过Tunnel直接上传数据到MaxCompute内部表,或者是通过OSS Python SDK上传到OSS后,在MaxCompute使用外部表做映射。

  • MaxCompute的外部表支持写出数据到数据源的能力,写出能力和一致性受外部系统的限制。例如:

    • Hologres:MaxCompute基于JDBC协议访问Hologres元信息,不能保证写出事务控制的原子性;MaxCompute SQL引擎对Hologres底层pangu数据只有直读并无直写能力;MaxCompute的分布式计算多进程并行写的复杂性,上述原因导致MaxComputeHologres写出数据不支持INSERT OVERWRITE语义,且作业运行失败的情况下可能会只写出部分数据。

    • HDFS:同样基于HMS,HDFS的写出也有较小概率不满足一致性。

    • OSS:OSS外部表写出时,通过.odps元信息文件控制可以降低不完整的概率。但如果为了引擎兼容性放弃使用.odps元信息文件控制机制,写出场景也有较小概率不完整。

  • MaxCompute对外部数据的写出能力如果使用INSERT OVERWRITE语义,会先写出数据,数据ddl commit阶段会删除表/分区已有数据,再替换为新写出数据。被删除数据MaxCompute无法回滚恢复,请提前做好备份,并建议写出后执行数据校验,如有问题可以重复执行完整写出。

相关文档

支持外部表

MaxCompute支持OSS、HologresRDS等多种外部表:

外部表示例

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

  • 访问OSSTableStore(OTS)非结构化数据,请参见OSS外部表访问OTS非结构化数据

  • 外部表访问OSS的账号,在RAM中自定义授权MaxCompute访问OSS的权限,请参见STS模式授权

  • MaxCompute的非结构化框架支持通过INSERT方式将MaxCompute的数据直接输出到OSS,请参见将数据写入OSS

  • 处理各种开源格式数据,请参见OSS外部表

  • 可以通过DataWorks配合MaxCompute对外部表进行可视化的创建、搜索、查询、配置、加工和分析。详情请参见外部表

常见问题