You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Amazon EMR中的Trino同时支持Delta表与Postgres表?

解决EMR Trino同时支持Delta Lake与PostgreSQL的配置问题

问题根源

你用delta.my_db.myrds_public_engine_demo_metadata查询PostgreSQL表的方式有误,delta是Delta Lake连接器对应的Trino catalog,该连接器仅能识别Delta格式的表,因此会抛出"非Delta表"的错误。要访问PostgreSQL表,需单独配置PostgreSQL连接器,并使用其对应的catalog名进行查询。

正确的EMR configurations.json配置

在原有Delta配置基础上,新增PostgreSQL连接器的配置项即可。每个Trino连接器在EMR中对应一个trino-connector-<连接器名称>的Classification,具体配置如下:

[
  {
    "Classification": "delta-defaults",
    "Properties": {"delta.enabled": "true"}
  },
  {
    "Classification": "trino-connector-delta",
    "Properties": {
      "hive.metastore": "glue",
      "hive.s3.endpoint": "https://s3.us-west-2.amazonaws.com"
      // 若EMR集群已通过IAM角色授权S3访问,无需配置密钥;否则需添加以下两行
      // "hive.s3.aws-access-key": "xxx",
      // "hive.s3.aws-secret-key": "xxx"
    }
  },
  {
    "Classification": "trino-connector-postgresql",
    "Properties": {
      "connector.name": "postgresql",
      "connection-url": "jdbc:postgresql://xxx.xxx.us-west-2.rds.amazonaws.com/my_db",
      "connection-user": "xxx",
      "connection-password": "xxx"
    }
  }
]

关键说明

  • Delta连接器配置:保留原有delta-defaults和trino-connector-delta配置,确保Glue作为元数据存储,S3端点匹配你的区域。推荐使用IAM角色授权S3访问,避免硬编码密钥。
  • PostgreSQL连接器配置:新增trino-connector-postgresql分类,填写正确的RDS连接地址、用户名和密码。该配置会在Trino中自动创建名为postgresql的catalog。

查询方式调整

配置完成后,查询不同类型的表需使用对应catalog:

  • Delta表:SELECT * FROM delta.my_db.engine_demo(原有方式不变)
  • PostgreSQL表:SELECT * FROM postgresql.my_db.myrds_public_engine_demo_metadata

额外提示

如果需要自定义PostgreSQL的catalog名称,可在trino-connector-postgresql的Properties中添加catalog.name参数,例如:

"catalog.name": "my_rds"

之后即可用my_rds.my_db.myrds_public_engine_demo_metadata访问PostgreSQL表。

内容的提问来源于stack exchange,提问作者Hongbo Miao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 00:37:18