当前位置: 首页 > news >正文

maxcomputer 和 hologres中的EXTERNAL TABLE 和 FOREIGN TABLE

在阿里云的大数据和实时数仓产品中,MaxCompute 和 Hologres 都支持类似于 EXTERNAL TABLE 和 FOREIGN TABLE 的机制,但它们的实现和语义有所不同。

下面分别说明:


☁️ 一、MaxCompute 中的 EXTERNAL TABLE 和 FOREIGN TABLE

1. EXTERNAL TABLE in MaxCompute

MaxCompute 的 EXTERNAL TABLE 是指外部表,用于读取 不属于 MaxCompute 本地存储的数据,主要用于对接外部数据源,比如:

  • OSS 文件(CSV、ORC、Parquet)
  • Hive 表(EMR)
  • 数据湖(如 Apache Iceberg)

它只是一个“映射”,不在 MaxCompute 中存储数据。

特点:

  • 数据不在 MaxCompute 中,而是存在外部系统
  • 常用于 “数仓 + 数据湖” 场景。
  • 适用于大规模历史数据冷数据)处理。

示例(OSS 外部表):

CREATE EXTERNAL TABLE oss_table (id BIGINT,name STRING
)
STORED BY 'com.aliyun.odps.CsvStorageHandler'
WITH SERDEPROPERTIES ('odps.properties.rolearn' = '<OSS角色ARN>','odps.properties.endpoint' = 'oss-cn-beijing.aliyuncs.com','odps.properties.bucket' = 'my-bucket','odps.properties.path' = 'path/to/data/'
);

2. FOREIGN TABLE in MaxCompute

MaxCompute 的 FOREIGN TABLE 是用来访问其他 数据库系统中的表数据,比如:

  • RDS(MySQL、PostgreSQL)
  • Hologres
  • AnalyticDB
  • PolarDB 等

它实际上通过 Data Integration 或 Federated Query 进行数据对接。

特点:

  • 用于跨数据源联邦查询(Federated Query)
  • 类似 PostgreSQL 中 FDW 的概念
  • 访问外部 OLTP/OLAP 数据库中的结构化数据
  • 可以通过 CREATE FOREIGN TABLE 语法定义映射

示例(访问 Hologres):

CREATE FOREIGN TABLE hologres_table (id BIGINT,name STRING
)
STORED BY 'com.aliyun.odps.FederatedStorageHandler'
WITH SERDEPROPERTIES ('odps.federated.source' = 'hologres','odps.federated.source.endpoint' = 'hg-cn-beijing.xxx.hologres.aliyuncs.com:80','odps.federated.source.database' = 'my_hologres_db','odps.federated.source.user' = 'my_user','odps.federated.source.password' = '******'
);

🚀 二、Hologres 中的 FOREIGN TABLE 和 EXTERNAL TABLE

Hologres 本身是基于 PostgreSQL 构建的高性能实时数据仓库,因此支持 PostgreSQL 风格的 FOREIGN TABLE。但其定义上并没有“EXTERNAL TABLE”的语法,而是将所有外部表统一称作 FOREIGN TABLE。

Hologres FOREIGN TABLE

Hologres 的 FOREIGN TABLE 用于访问外部数据源,比如:

  • MaxCompute(常见)
  • Object Storage Service (OSS)
  • AnalyticDB
  • Kafka(通过流表机制)
  • 本地 PostgreSQL 外表机制

Hologres 中定义 FOREIGN TABLE 的典型用途是访问 MaxCompute 表(用于实现实时+离线混合分析)。

示例(访问 MaxCompute 表):

CREATE FOREIGN TABLE mc_table (id BIGINT,name TEXT
)
SERVER odps_server
OPTIONS (project_name 'my_project',table_name 'my_odps_table',access_id 'xxx',access_key 'yyy',endpoint 'http://service.odps.aliyun.com/api'
);

特点:

  • FOREIGN TABLE 是对 MaxCompute 表的“轻映射”
  • 查询是按需、实时拉取数据(不落地)
  • 适合在实时数仓中联动离线仓数据(冷热分层)

📌 Hologres 中没有独立的 “EXTERNAL TABLE” 类型,统一通过 FOREIGN TABLE 实现联邦数据访问。


✅ 总结对比表(按平台)

平台

表类型

访问对象

是否存储数据

是否支持写入

典型用法

MaxCompute

EXTERNAL TABLE

OSS、数据湖、Hive

读取外部大数据文件(数据湖)

MaxCompute

FOREIGN TABLE

RDS、Hologres、AnalyticDB 等

部分支持

联邦查询,访问在线数据库系统

Hologres

FOREIGN TABLE

MaxCompute、OSS、A-DB、Kafka 等

实时访问外部数仓或流系统数据

http://www.lqws.cn/news/464923.html

相关文章:

  • LeetCode-2390. 从字符串中移除星号
  • 力扣网C语言编程题:多数元素
  • DAY 38 Dataset和Dataloader类
  • 分布式锁的四种实现方式:从原理到实践
  • 高云GW5AT-LV60 FPGA图像处理板
  • React Native自定义底部弹框
  • Docker高级管理--容器通信技术与数据持久化
  • 华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建b站视频总结大模型
  • Java ArrayList集合和HashSet集合详解
  • 【自动鼠标键盘控制器|支持图像识别】
  • 从代码学习深度学习 - 预训练BERT PyTorch版
  • 文本分类与聚类:让信息“各归其位”的实用方法
  • 最具有实际意义价值的比赛项目
  • CMS与G1的并发安全秘籍:如何在高并发的垃圾回收中保持正确性?
  • 【开源初探】基于 Qwen2.5VL的文档解析工具:docext
  • 【Linux-shell】探索Dialog 工具在 Shell 图形化编程中的高效范式重构
  • synchronized 和 ReentrantLock 的区别
  • 探索 Oracle Database 23ai 中的 SQL 功能
  • 团结引擎 1.5.0 更新 | OpenHarmony 平台开发体验全面升级,突破游戏类应用帧率限制
  • CertiK联创顾荣辉将于港大活动发表演讲,分享Web3安全与发展新视角
  • (LeetCode 面试经典 150 题) 80. 删除有序数组中的重复项 II (双指针、栈)
  • AI与SEO关键词协同进化
  • SQL关键字三分钟入门:INSERT INTO —— 插入数据详解
  • Armbian 开机启动点灯脚本
  • 【C++特殊工具与技术】局部类
  • 从事登高架设作业需要注意哪些安全事项?
  • 57-Oracle SQL Profile(23ai)实操
  • 内容搜索软件AnyTXT.Searcher忘记文件名也能搜,全文检索 1 秒定位文件
  • Java求职者面试指南:微服务技术与源码原理深度解析
  • Rabbitmq集成springboot,手动确认消息basicAck、basicNack、basicReject的使用