如何通过Terraform启用AWS Glue数据目录的Hive表元数据功能?
解决Terraform配置EMR集群启用Glue作为Hive元数据存储的问题
核心解决方法
你需要在EMR集群的configurations_json中补充hive-site配置,通过指定Hive元数据客户端工厂类来启用Glue数据目录作为Hive元数据存储,这对应AWS控制台里的「Use for Hive table metadata」功能。
具体Terraform配置示例
在aws_emr_cluster资源的configurations_json中添加以下hive-site配置块:
{ "Classification": "hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", "hive.metastore.store.rawdata.impl": "org.apache.hadoop.hive.metastore.ObjectStore" } }
完整的Terraform资源示例(整合你已有的配置):
resource "aws_emr_cluster" "trino_ha_cluster" { name = "trino-high-availability-cluster" release_label = "emr-6.15.0" // 建议使用emr-6.x及以上版本以兼容Glue集成 applications = ["HCatalog", "Trino"] // 你已配置的应用 // 主实例队列配置(已设置目标按需容量3) instance_groups { name = "Master" instance_role = "MASTER" instance_type = "m5.xlarge" instance_count = 3 ebs_config { size = 32 } } // Core/Task实例组配置请按需补充... configurations_json = jsonencode([ // 你已有的trino-connector-hive配置 { "Classification": "trino-connector-hive", "Properties": { "hive.metastore": "glue", "hive.glue.region": "us-east-1" // 替换为你的AWS区域 } }, // 新增的hive-site配置,启用Glue作为Hive元数据存储 { "Classification": "hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", "hive.metastore.store.rawdata.impl": "org.apache.hadoop.hive.metastore.ObjectStore" } } ]) // 集群角色、实例配置文件等其他必填项请按需补充... }
关键注意事项
- EMR版本要求:确保使用的EMR版本支持Glue数据目录集成,emr-6.x及以上版本无需额外依赖,直接支持该配置。
- 参数作用:
hive.metastore.client.factory.class是核心参数,它指定Hive使用Glue提供的元数据客户端,这正是控制台中「Use for Hive table metadata」功能的底层实现。 - 协同Trino配置:你已配置的Trino Hive连接器使用Glue的设置,加上hive-site的配置,可实现集群内Hive服务与Trino统一使用Glue数据目录作为元数据源。
内容的提问来源于stack exchange,提问作者Hongbo Miao
相关产品推荐
相关产品推荐

